《别再只会调API了!10分钟教你用DeepSeek + LangChain搭建私人知识库》
DeepSeek V3发布后效果惊艳,但如何让它“读懂”你私有的PDF文档、公司财报或个人笔记?这就是RAG(检索增强生成)技术的魅力。今天手把手带大家搭建一个本地知识库,不花一分钱,打造你的专属AI助手!
摘要:
DeepSeek V3发布后效果惊艳,但如何让它“读懂”你私有的PDF文档、公司财报或个人笔记?这就是RAG(检索增强生成)技术的魅力。今天手把手带大家搭建一个本地知识库,不花一分钱,打造你的专属AI助手!
1. 为什么选择 DeepSeek + RAG?
-
痛点: 通用大模型(ChatGPT/DeepSeek)不知道你公司的内部文档,且存在“幻觉”。
-
RAG原理:
-
Embedding: 把你的文档变成向量(数学表示)。
-
Retrieval: 用户提问时,先去向量库搜索相关段落。
-
Generation: 把搜到的段落 + 问题 喂给大模型,生成精准答案。
-
架构图解:
PDF -> Chunking -> Vector DB<==>Query -> Retrieval -> LLM -> Answer
2. 环境准备 (Prerequisites)
我们需要用到的核心库:
-
langchain:大模型开发的瑞士军刀。 -
chromadb:轻量级本地向量数据库(无需安装服务器)。 -
sentence-transformers:免费开源的Embedding模型。
pip install langchain langchain-community chromadb sentence-transformers openai
3. 核心代码实战 (Show Me The Code)
Step 1: 加载并切割文档 大模型有上下文限制,我们需要把长文档切成小块(Chunk)。
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 1. 加载本地数据
loader = TextLoader("./my_secret_notes.txt", encoding='utf-8')
documents = loader.load()
# 2. 切割文本 (Chunking)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
print(f"文档已切割为 {len(chunks)} 个片段")
Step 2: 向量化并存入 ChromaDB 这里我们使用 HuggingFace 免费的嵌入模型,不需要花钱调OpenAI的Embedding API。
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
# 3. 初始化 Embedding 模型 (本地运行)
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
# 4. 创建向量数据库
db = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")
print("知识库构建完成!")
Step 3: 接入 DeepSeek 大模型 DeepSeek 兼容 OpenAI 的 SDK 格式,配置非常简单。
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
# 5. 配置 DeepSeek (使用 OpenAI 兼容接口)
llm = ChatOpenAI(
model_name="deepseek-chat", # 或者是 deepseek-coder
openai_api_key="sk-your-deepseek-api-key",
openai_api_base="https://api.deepseek.com/v1",
temperature=0.1
)
# 6. 构建检索问答链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=db.as_retriever(search_kwargs={"k": 3}), # 每次查最相关的3段
return_source_documents=True
)
Step 4: 见证奇迹
query = "这篇文章里提到的核心优化策略是什么?"
result = qa_chain.invoke({"query": query})
print("DeepSeek 回答:")
print(result["result"])
4. 进阶玩法与思考
-
更换模型: 如果显卡够强,可以本地跑 Ollama + Llama3,实现全链路离线(隐私绝对安全)。
-
Web界面: 结合
Streamlit,你可以用 50 行代码把这个脚本变成一个漂亮的网页版聊天机器人。
5. 写在最后
AI应用开发正在变得越来越简单。未来的核心竞争力不是“会调包”,而是如何将业务数据与AI能力结合。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)