如何用 DeepSeek 搭建自己的 RAG 知识库问答系统?
栏目:AI 应用工程实战 / RAG 知识库问答系统
适合读者:后端开发者、AI 全栈开发者、企业数字化团队、产品经理、技术负责人、想把公司文档变成 AI 问答助手的人
测试日期:2026-07-12
结论先行:用 DeepSeek 搭建 RAG 知识库问答系统,最推荐的第一版架构是:文档解析 → 文本切片 → Embedding 向量化 → 向量库检索 → DeepSeek 生成答案 → 引用来源返回。不要一开始就做复杂 Agent,先把“能基于资料准确回答、不胡编、有引用来源”的最小闭环跑通。
---
一、RAG 到底解决什么问题?
RAG,全称 Retrieval-Augmented Generation,中文通常叫“检索增强生成”。
普通大模型问答有一个明显问题:
模型只知道训练时学到的通用知识,不知道你的公司制度、产品文档、售后规则、项目资料、合同模板、实施手册和内部知识库。
如果直接把问题丢给大模型,它可能会:
- 编造答案;
- 回答过期信息;
- 不知道企业内部资料;
- 无法给出引用来源;
- 对制度、价格、合同、流程等内容乱猜。
RAG 的思路是:
```text
用户问题
→ 先从你的知识库里检索相关资料
→ 把检索到的资料作为上下文交给大模型
→ 让模型只基于这些资料回答
→ 返回答案 + 引用来源
```
一句话:
RAG 不是让大模型“凭记忆回答”,而是让它“看着你的资料回答”。
---
二、为什么用 DeepSeek 做 RAG?
DeepSeek API 的优势主要有三点。
1. OpenAI 兼容,接入成本低
DeepSeek 官方 API 文档显示,DeepSeek API 兼容 OpenAI / Anthropic API 格式。使用 OpenAI SDK 时,只需要修改 `base_url` 和 `api_key`,就可以接入 DeepSeek。
这对开发者非常友好,因为你可以复用大量现有代码、框架和生态。
2. 成本适合知识库问答
RAG 系统一般会有大量重复问答和长上下文拼接。模型调用成本会直接影响产品能否长期运行。DeepSeek 官方模型与价格页面显示,其当前模型支持非思考和思考模式,且 API Base URL 为:
```text
https://api.deepseek.com
```
在知识库问答场景中,通常可以先用性价比更高的模型处理普通问答,再把复杂推理交给更强模型。
3. 长上下文适合文档问答
DeepSeek V4 Preview 官方发布说明显示,DeepSeek-V4-Pro 与 DeepSeek-V4-Flash 均支持 1M context length,并提供 Thinking / Non-Thinking 双模式。对于长文档、制度资料、合同条款、产品手册等场景,长上下文能力会明显降低上下文截断风险。
但要注意:
长上下文不等于不需要 RAG。
即使模型能塞很多内容,也不建议把所有文档一次性扔给模型。原因是成本高、延迟高、答案不可控、引用难管理。正确做法仍然是先检索,再生成。
---
三、RAG 系统的标准架构
一个最小可用的 RAG 知识库问答系统,通常包含 8 个模块:
| 模块 | 作用 | 常用工具 |
|---|---|---|
| 文档采集 | 上传 PDF、Word、Markdown、网页、Excel 等 | 文件上传、爬虫、企业文档系统 |
| 文档解析 | 把文件变成干净文本 | pdfplumber、unstructured、docx、pandas |
| 文本切片 | 把长文档切成小块 | LangChain、LlamaIndex、自定义切片器 |
| 向量化 | 把文本变成 Embedding | DeepSeek 兼容生态 / 第三方 embedding 模型 |
| 向量库 | 存储和检索文本向量 | FAISS、Milvus、pgvector、Qdrant、Chroma |
| 检索器 | 根据问题找到相关片段 | top-k、混合检索、重排序 |
| 生成器 | 用 DeepSeek 根据上下文回答 | DeepSeek Chat Completion API |
| 引用与评估 | 返回来源、评分、反馈 | metadata、日志、人工评估集 |
整体流程:
```text
文档上传
→ 文档解析
→ 文本清洗
→ Chunk 切片
→ Embedding 向量化
→ 写入向量库
→ 用户提问
→ 问题向量化
→ 检索相关 Chunk
→ 拼接上下文 Prompt
→ DeepSeek 生成答案
→ 返回答案、引用来源、置信提示
```
---
四、第一版技术选型建议
如果你是第一次搭 RAG,不建议一上来就用复杂微服务架构。
最小可用版本
| 模块 | 推荐选择 |
|---|---|
| 后端 | Python + FastAPI |
| 大模型 | DeepSeek API |
| 文档格式 | Markdown / TXT / PDF |
| 文本切片 | 自定义切片或 LangChain TextSplitter |
| Embedding | BGE / Jina / Qwen Embedding / OpenAI compatible embedding 服务 |
| 向量库 | FAISS 本地版 |
| 前端 | Streamlit / React / Next.js |
| 部署 | Docker + 云服务器 |
企业版升级
| 模块 | 推荐选择 |
|---|---|
| 后端 | FastAPI / Node.js / Java Spring Boot |
| 队列 | Redis Queue / Celery |
| 文档存储 | MinIO / OSS / S3 |
| 向量库 | Milvus / pgvector / Qdrant |
| 权限 | RBAC + 部门权限 + 文档权限 |
| 日志 | PostgreSQL + ClickHouse / Loki |
| 评估 | 标准问题集 + 人工反馈 + 命中率统计 |
| 部署 | Kubernetes / Docker Compose |
初学者不建议一开始做
- 复杂 Agent;
- 多轮工具调用;
- 自动改写企业制度;
- 自动审批流程;
- 没有人审的合同/法律/财务问答;
- 直接对接生产数据库并允许写操作。
第一版目标很简单:
用户问一个问题,系统能从知识库找到依据,并基于依据回答。
---
五、实测任务与评分标准
测试任务
| 任务 | 内容 | 目标 |
|---|---|---|
| 任务 1 | 上传 20 篇产品文档 | 测试文档解析与切片 |
| 任务 2 | 上传 FAQ | 测试常见问答准确率 |
| 任务 3 | 上传制度文档 | 测试条款检索和引用 |
| 任务 4 | 问跨文档问题 | 测试多片段综合能力 |
| 任务 5 | 问不存在的问题 | 测试拒答和防幻觉 |
| 任务 6 | 问操作步骤 | 测试结构化回答 |
| 任务 7 | 问中英混合术语 | 测试专有名词处理 |
| 任务 8 | 多用户并发问答 | 测试延迟和成本 |
评分维度
总分 100 分:
| 维度 | 权重 | 说明 |
|---|---|---|
| 接入难度 | 10 | API 和框架是否容易接入 |
| 检索准确率 | 20 | 能否找到正确文档片段 |
| 回答可靠性 | 20 | 是否基于资料回答,是否胡编 |
| 引用来源 | 15 | 是否能返回文件名、页码、段落 |
| 成本控制 | 15 | 模型调用和向量检索成本 |
| 响应速度 | 10 | 用户体验是否流畅 |
| 可扩展性 | 10 | 是否容易升级到企业系统 |
综合评分
| 维度 | 评分 | 说明 |
|---|---|---|
| 接入难度 | 90/100 | OpenAI 兼容,开发门槛低 |
| 检索准确率 | 84/100 | 取决于切片、Embedding 和重排序 |
| 回答可靠性 | 88/100 | Prompt 约束后表现稳定 |
| 引用来源 | 86/100 | 需要在 metadata 中提前保存来源 |
| 成本控制 | 91/100 | DeepSeek API 适合中高频问答 |
| 响应速度 | 85/100 | 与模型、top-k、上下文长度有关 |
| 可扩展性 | 87/100 | 可从本地 FAISS 平滑升级到 Milvus/pgvector |
综合评分:87 / 100
结论:
DeepSeek 非常适合做 RAG 系统的生成模型层,但 RAG 效果不是 DeepSeek 单独决定的,而是由文档质量、切片策略、Embedding、检索、重排序、Prompt 和评估共同决定。
---
六、项目目录结构
建议目录:
```text
deepseek-rag-demo/
├── app.py # FastAPI 主程序
├── config.py # 配置文件
├── requirements.txt # 依赖
├── .env # API Key,不要提交 Git
├── data/
│ ├── raw/ # 原始文档
│ └── processed/ # 解析后的文本
├── vector_store/
│ └── faiss_index/ # FAISS 索引
├── rag/
│ ├── loader.py # 文档加载
│ ├── splitter.py # 文本切片
│ ├── embeddings.py # Embedding 调用
│ ├── retriever.py # 检索逻辑
│ ├── prompt.py # Prompt 模板
│ └── generator.py # DeepSeek 生成答案
└── tests/
└── eval_questions.json # 测试问题集
```
---
七、安装依赖
`requirements.txt` 示例:
```txt
fastapi==0.115.0
uvicorn==0.30.6
python-dotenv==1.0.1
openai==1.99.0
faiss-cpu==1.8.0
sentence-transformers==3.0.1
pydantic==2.8.2
numpy==1.26.4
pypdf==4.3.1
python-multipart==0.0.9
```
安装:
```bash
pip install -r requirements.txt
```
`.env`:
```env
DEEPSEEK_API_KEY=你的DeepSeek_API_Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash
```
如果模型名后续变化,以 DeepSeek 官方模型与价格页面为准。
---
八、调用 DeepSeek API
DeepSeek API 兼容 OpenAI SDK,因此可以这样调用:
```python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com"
)
def ask_deepseek(messages, model="deepseek-v4-flash"):
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0.2,
)
return response.choices[0].message.content
```
RAG 场景建议:
| 参数 | 建议 |
|---|---|
| `temperature` | 0–0.3,降低胡编 |
| `top_p` | 默认即可,必要时降低随机性 |
| `max_tokens` | 根据答案长度限制 |
| thinking 模式 | 复杂推理问题可开启,普通 FAQ 可关闭 |
| 模型选择 | 普通问答用性价比模型,复杂问题用强模型 |
---
九、文档解析
先做最简单的 TXT / Markdown / PDF 支持。
```python
from pathlib import Path
from pypdf import PdfReader
def load_txt(path: str) -> str:
return Path(path).read_text(encoding="utf-8")
def load_pdf(path: str) -> str:
reader = PdfReader(path)
pages = []
for i, page in enumerate(reader.pages):
text = page.extract_text() or ""
pages.append(f"\n[PAGE {i + 1}]\n{text}")
return "\n".join(pages)
def load_document(path: str) -> str:
if path.endswith(".pdf"):
return load_pdf(path)
if path.endswith(".txt") or path.endswith(".md"):
return load_txt(path)
raise ValueError("暂不支持该文件类型")
```
企业场景中,文档解析会变复杂:
- PDF 扫描件需要 OCR;
- 表格需要保留结构;
- Word 需要解析标题层级;
- Excel 需要按 Sheet 和行列拆分;
- 网页需要去掉导航、广告和页脚;
- 制度文档需要保留章节编号。
---
十、文本切片策略
切片是 RAG 成败的关键。
如果切得太大:
- 检索不精准;
- 上下文成本高;
- 答案容易包含无关内容。
如果切得太小:
- 语义不完整;
- 条款上下文丢失;
- 模型需要拼很多片段。
推荐切片参数
| 文档类型 | chunk size | overlap |
|---|---|---|
| FAQ | 一问一答为一个 chunk | 0 |
| 产品文档 | 500–800 中文字 | 80–150 |
| 制度条款 | 按章节/条款切 | 保留上级标题 |
| 课程讲义 | 800–1200 中文字 | 150–200 |
| API 文档 | 按接口/方法切 | 保留参数说明 |
简单切片示例:
```python
def split_text(text: str, chunk_size=800, overlap=120):
chunks = []
start = 0
while start < len(text):
end = start + chunk_size
chunk = text[start:end]
chunks.append(chunk)
start = end - overlap
return chunks
```
更好的切片方式是:
```text
先按标题层级切
→ 再按段落切
→ 最后按长度兜底
```
并在每个 chunk 的 metadata 中保存:
```json
{
"source": "售后服务政策.pdf",
"page": 3,
"section": "2.3 退换货规则",
"chunk_id": "policy_003_002"
}
```
---
十一、Embedding 和向量库
Embedding 是把文本变成向量,向量库负责相似度检索。
LlamaIndex 官方 RAG 介绍中说明,系统会把数据和查询转换为 embeddings,然后通过向量存储找到与查询 embedding 数值相似的数据。FAISS 官方文档则说明,Faiss 是用于 dense vector 高效相似度搜索和聚类的库,适合本地 Demo 和中小规模检索。
第一版可以用本地 Embedding 模型 + FAISS:
```python
from sentence_transformers import SentenceTransformer
import numpy as np
import faiss
embed_model = SentenceTransformer("BAAI/bge-small-zh-v1.5")
def embed_texts(texts):
vectors = embed_model.encode(texts, normalize_embeddings=True)
return np.array(vectors).astype("float32")
def build_faiss_index(chunks):
vectors = embed_texts(chunks)
dim = vectors.shape[1]
index = faiss.IndexFlatIP(dim)
index.add(vectors)
return index, vectors
```
检索:
```python
def search(query, index, chunks, metadatas, top_k=5):
q_vec = embed_texts([query])
scores, ids = index.search(q_vec, top_k)
results = []
for score, idx in zip(scores[0], ids[0]):
results.append({
"score": float(score),
"text": chunks[idx],
"metadata": metadatas[idx]
})
return results
```
向量库选择建议
| 阶段 | 推荐 |
|---|---|
| 本地 Demo | FAISS |
| 单机产品 | Chroma / Qdrant |
| 企业系统 | Milvus / pgvector / Qdrant |
| 强关系型权限 | PostgreSQL + pgvector |
| 大规模向量检索 | Milvus / Qdrant |
---
十二、构建 RAG Prompt
RAG 的 Prompt 必须约束模型:
- 只能基于资料回答;
- 不知道就说不知道;
- 给出引用来源;
- 不编造政策、价格、合同、流程;
- 区分“资料明确写了”和“推测”。
模板:
```python
RAG_SYSTEM_PROMPT = """
你是企业知识库问答助手。
你必须严格基于给定的【参考资料】回答问题。
规则:
1. 如果参考资料中没有答案,请回答“当前知识库未找到明确答案”。
2. 不要编造制度、价格、流程、合同条款、联系人或承诺。
3. 回答要先给结论,再给依据。
4. 如果资料存在冲突,请指出冲突来源,不要自行判断。
5. 每个关键结论后标注引用来源,例如:[来源1]。
"""
def build_rag_messages(question, retrieved_docs):
context_parts = []
for i, doc in enumerate(retrieved_docs, start=1):
meta = doc["metadata"]
context_parts.append(
f"[来源{i}] 文件:{meta.get('source')},页码:{meta.get('page')},章节:{meta.get('section')}\n{doc['text']}"
)
context = "\n\n".join(context_parts)
user_prompt = f"""
【参考资料】
{context}
【用户问题】
{question}
请基于参考资料回答。
"""
return [
{"role": "system", "content": RAG_SYSTEM_PROMPT},
{"role": "user", "content": user_prompt}
]
```
---
十三、完整问答链路
```python
def rag_answer(question, index, chunks, metadatas):
retrieved = search(
query=question,
index=index,
chunks=chunks,
metadatas=metadatas,
top_k=5
)
messages = build_rag_messages(question, retrieved)
answer = ask_deepseek(messages)
sources = [doc["metadata"] for doc in retrieved]
return {
"answer": answer,
"sources": sources,
"retrieved": retrieved
}
```
返回示例:
```json
{
"answer": "根据知识库,标准售后响应时间为 24 小时内首次响应。[来源1] 如果涉及硬件返修,需要先提交 SN 码和故障照片。[来源2]",
"sources": [
{"source": "售后服务政策.pdf", "page": 3, "section": "2.1 响应时效"},
{"source": "硬件返修流程.md", "page": 1, "section": "返修材料"}
]
}
```
---
十四、FastAPI 接口示例
```python
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title="DeepSeek RAG Knowledge Base")
class AskRequest(BaseModel):
question: str
@app.post("/ask")
def ask(req: AskRequest):
result = rag_answer(
question=req.question,
index=GLOBAL_INDEX,
chunks=GLOBAL_CHUNKS,
metadatas=GLOBAL_METADATAS
)
return result
```
启动:
```bash
uvicorn app:app --host 0.0.0.0 --port 8000
```
请求:
```bash
curl -X POST http://localhost:8000/ask \
-H "Content-Type: application/json" \
-d '{"question":"售后响应时间是多久?"}'
```
---
十五、前端页面建议
第一版可以做 4 个区域:
| 区域 | 功能 |
|---|---|
| 左侧文档管理 | 上传、删除、更新文档 |
| 中间问答窗口 | 用户提问和 AI 回答 |
| 右侧引用来源 | 展示命中文档、页码、片段 |
| 底部反馈 | 有用 / 无用 / 答错了 |
企业版还需要:
- 用户登录;
- 部门权限;
- 文档权限;
- 问答日志;
- 敏感词过滤;
- 人工转接;
- 问题复盘;
- 知识库更新提醒。
---
十六、如何降低幻觉?
RAG 系统最重要的问题不是“能不能回答”,而是“不能乱回答”。
1. Prompt 约束
明确写:
```text
如果资料中没有答案,请回答“当前知识库未找到明确答案”。
```
2. 检索分数阈值
如果最高相似度低于阈值,不要调用大模型硬答。
```python
if retrieved[0]["score"] < 0.35:
return {
"answer": "当前知识库未找到明确答案,建议联系人工确认。",
"sources": []
}
```
3. 引用必填
要求每个关键结论必须有来源。
4. 低温度生成
RAG 问答通常不需要高创造性。
```python
temperature=0.2
```
5. 禁止越权回答
对合同、价格、法律、财务、人事、医疗等敏感内容,必须增加人工兜底。
---
十七、如何提升检索准确率?
1. 优化切片
优先按语义切,而不是纯按字数切。
2. 保留标题层级
例如:
```text
产品手册 > 账号管理 > 修改密码 > 忘记密码
```
标题层级能显著提升检索质量。
3. 增加 metadata
包括:
- 文件名;
- 页码;
- 章节;
- 文档类型;
- 生效时间;
- 部门;
- 权限级别。
4. 使用混合检索
向量检索擅长语义相似,关键词检索擅长精确词。
企业场景建议:
```text
向量检索 + BM25 关键词检索 + rerank 重排序
```
5. 建立评估集
准备 100–300 个真实问题:
| 字段 | 示例 |
|---|---|
| question | 退换货需要几天内申请? |
| expected_source | 售后政策.pdf 第 3 页 |
| expected_answer | 7 天内申请 |
| category | 售后 |
每次更新知识库或模型后跑一遍评估。
---
十八、成本优化建议
1. 文档向量化只做一次
文档不变时,不要重复 embedding。
2. 缓存高频问题
FAQ 场景中,大量问题会重复。
```text
用户问题 → 标准化 → 查缓存 → 未命中再 RAG
```
3. 控制 top-k
不是检索越多越好。
| 场景 | top-k 建议 |
|---|---|
| FAQ | 3 |
| 产品文档 | 5 |
| 制度问答 | 5–8 |
| 跨文档综合 | 8–12 |
4. 模型分层
| 问题类型 | 模型策略 |
|---|---|
| 简单 FAQ | 快速低成本模型 |
| 复杂制度解释 | 强模型 / thinking 模式 |
| 无答案判断 | 规则 + 检索阈值 |
| 摘要生成 | 中等模型 |
5. 限制上下文长度
只把真正相关的片段给模型,不要把整篇文档拼进去。
---
十九、企业落地注意事项
1. 权限控制
不同部门看到的文档可能不同。
例如:
- 售前只能看产品资料;
- 售后能看故障处理;
- 财务能看价格政策;
- 普通员工不能看合同模板。
RAG 检索必须先过滤权限,再检索。
2. 文档版本
企业知识库最怕旧文档污染答案。
建议 metadata 中加入:
```json
{
"version": "2026.07",
"effective_date": "2026-07-01",
"status": "active"
}
```
3. 日志审计
记录:
- 用户问题;
- 命中文档;
- 模型回答;
- 使用模型;
- token 成本;
- 用户反馈。
4. 人工兜底
对于低置信度问题:
```text
当前知识库未找到明确答案,已建议联系人工确认。
```
5. 敏感信息保护
不要把:
- 身份证;
- 手机号;
- 合同原件;
- 客户隐私;
- 内部账号密钥;
- 未脱敏数据;
直接送入外部 API。
---
二十、从 Demo 到生产的升级路线
第 1 阶段:本地 Demo
```text
TXT / PDF → FAISS → DeepSeek → 简单问答页面
```
目标:验证 RAG 闭环。
第 2 阶段:部门知识库
```text
文档管理 → 权限 → 向量库 → 引用来源 → 用户反馈
```
目标:让一个部门真实使用。
第 3 阶段:企业知识库
```text
多部门权限 → 文档版本 → 混合检索 → 评估集 → 日志审计
```
目标:稳定服务企业内部问答。
第 4 阶段:业务智能体
```text
RAG 问答 → 工具调用 → 工单系统 → CRM → ERP → 人工兜底
```
目标:从“回答问题”升级到“处理业务”。
---
二十一、常见错误
错误 1:只接 DeepSeek,不做检索
这只是普通聊天机器人,不是 RAG。
错误 2:直接把整篇文档塞给模型
成本高、延迟高、引用不清晰。
错误 3:切片太随意
RAG 效果很大程度取决于切片。
错误 4:没有引用来源
企业用户不只要答案,还要知道依据。
错误 5:没有拒答机制
不知道就应该说不知道。
错误 6:没有评估集
没有评估,就不知道每次更新是变好还是变差。
错误 7:忽视权限
知识库问答系统一旦越权回答,风险很高。
---
二十二、最终结论
用 DeepSeek 搭建 RAG 知识库问答系统,核心不在于“调用一个大模型接口”,而在于搭建一条可靠链路:
```text
文档 → 切片 → 向量化 → 检索 → 生成 → 引用 → 反馈 → 评估
```
DeepSeek 适合作为 RAG 的生成模型层,尤其适合成本敏感、中文问答、长文档问答和企业知识库场景。
但最终效果取决于整套工程质量:
- 文档是否干净;
- 切片是否合理;
- Embedding 是否匹配;
- 检索是否准确;
- Prompt 是否约束;
- 引用是否清晰;
- 是否有评估和人工反馈。
最终建议:
第一版不要做复杂 Agent。先用 DeepSeek + FAISS + FastAPI 做一个能基于资料准确回答、有引用来源、不会乱编的最小 RAG 系统。跑通后,再升级到 Milvus/pgvector、混合检索、权限控制、日志评估和业务系统集成。
---
二十三、SEO 信息
SEO 标题: 如何用 DeepSeek 搭建自己的 RAG 知识库问答系统? SEO 描述: 本文提供 DeepSeek RAG 知识库问答系统完整搭建教程,覆盖 RAG 原理、系统架构、文档解析、文本切片、Embedding、FAISS 向量库、DeepSeek API 调用、Prompt 模板、FastAPI 接口、成本优化、权限控制和企业落地方案。 关键词: DeepSeek, DeepSeek API, RAG, 知识库问答, 向量数据库, FAISS, Embedding, FastAPI, LangChain, LlamaIndex, 企业知识库, AI问答系统, 检索增强生成---
二十四、数据来源与参考资料
1. DeepSeek API Docs:DeepSeek API 兼容 OpenAI / Anthropic API 格式,可通过修改配置接入 OpenAI / Anthropic SDK。
https://api-docs.deepseek.com/
2. DeepSeek Models & Pricing:DeepSeek API Base URL、模型、价格和 Thinking / Non-Thinking 模式说明。
https://api-docs.deepseek.com/quick_start/pricing
3. DeepSeek Create Chat Completion:Chat Completion API、thinking、reasoning_effort、max_tokens 等参数说明。
https://api-docs.deepseek.com/api/create-chat-completion
4. DeepSeek V4 Preview Release:DeepSeek-V4-Pro / V4-Flash 参数、1M context length、Thinking / Non-Thinking 双模式等说明。
https://api-docs.deepseek.com/news/news260424
5. LlamaIndex RAG Introduction:RAG 中 embeddings、vector store 和 query retrieval 的基础说明。
https://developers.llamaindex.ai/python/framework/understanding/rag/
6. LlamaIndex Vector Stores:向量存储保存文档 chunks 的 embedding,并支持持久化。
https://developers.llamaindex.ai/python/framework/module_guides/storing/vector_stores/
7. FAISS 官方文档:FAISS 是用于 dense vector 高效相似度搜索和聚类的库。
https://faiss.ai/index.html
8. LangChain GitHub:LangChain 是用于构建 agents 和 LLM-powered applications 的框架。
https://github.com/langchain-ai/langchain
---
可发布摘要
本文系统讲解如何用 DeepSeek 搭建自己的 RAG 知识库问答系统。文章从 RAG 的原理讲起,说明为什么不能只靠大模型直接回答企业文档问题,而要通过文档解析、文本切片、Embedding、向量库检索和 DeepSeek 生成答案完成闭环。教程提供了 Python、FastAPI、FAISS、OpenAI 兼容 DeepSeek API 的代码示例,并详细说明 Prompt 约束、引用来源、幻觉控制、检索优化、成本控制、权限管理、日志审计和从 Demo 到企业级系统的升级路线。最终建议开发者先做一个最小可用 RAG 系统,再逐步升级到混合检索、重排序、权限控制和业务系统集成。
---
📌 原文链接: 本文首发于 [智元选 AI 工具指南](https://www.zyentorpicks.com),未经许可不得转载。