RAG 实战:用 LangChain + 向量数据库构建企业知识库
·3 分钟阅读·68 次阅读
RAG 实战:构建企业知识库
大模型最大的问题是「幻觉」——它会一本正经地编造答案。RAG(检索增强生成)通过让 AI 先检索相关文档再回答,完美解决了这个问题。
什么是 RAG?
RAG = Retrieval Augmented Generation,检索增强生成。核心思路:
- 将企业文档切分成小块
- 用 Embedding 模型将文本转为向量
- 存储到向量数据库
- 用户提问时,先检索相关文档
- 将文档 + 问题一起发给大模型
技术栈
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 框架 | LangChain | AI 应用开发框架 |
| 向量数据库 | Chroma / Pinecone | 存储文档向量 |
| Embedding | text-embedding-3-small | 文本转向量 |
| 大模型 | DeepSeek V4 | 生成回答 |
| API 中转 | Ciyuano 词元圈 | 统一 API 入口 |
完整代码
1. 安装依赖
pip install langchain langchain-openai chromadb tiktoken
2. 加载文档
from langchain_community.document_loaders import (
DirectoryLoader,
TextLoader,
PyPDFLoader
)
from langchain.text_splitter import RecursiveCharacterTextSplitter
加载 docs 目录下的所有文件
loader = DirectoryLoader("./docs", glob="*/.md")
documents = loader.load()
切分文档
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", "。", "!", "?"]
)
chunks = splitter.split_documents(documents)
print(f"切分为 {len(chunks)} 个文档块")
3. 创建向量数据库
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
embeddings = OpenAIEmbeddings(
base_url="https://www.ciyuano.com/v1",
api_key="sk-relay-你的密钥",
model="text-embedding-3-small"
)
vectorstore = Chroma.from_documents(
chunks,
embeddings,
persist_directory="./chroma_db"
)
print("向量数据库创建完成!")
4. 构建问答链
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek-v4-flash",
base_url="https://www.ciyuano.com/v1",
api_key="sk-relay-你的密钥",
temperature=0
)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(
search_kwargs={"k": 3}
),
return_source_documents=True
)
提问
result = qa_chain.invoke({"query": "公司的请假制度是什么?"})
print("回答:", result["result"])
print("来源:", [doc.metadata["source"] for doc in result["source_documents"]])
优化技巧
1. 切分策略
根据文档类型选择不同的切分方式:
- Markdown:按标题切分
- 代码:按函数/类切分
- PDF:按段落切分
2. 检索优化
- 使用混合检索(向量 + 关键词)
- 调整 top_k 数量
- 使用重排序模型
3. Prompt 优化
在 Prompt 中明确要求:
- 只根据提供的文档回答
- 如果文档中没有相关信息,明确说「我不确定」
- 引用文档来源
总结
RAG 是企业 AI 应用的最佳实践。通过 LangChain + 向量数据库,你可以快速搭建一个准确、可靠的企业知识库系统。
📖 相关文章
💬 评论功能暂未开放,敬请期待