返回 Skill 列表
extension
分类: 其它无需 API Key

RAG 知识库搭建

企业级 RAG 知识库从零搭建全流程。文档分块策略(固定/语义/结构化三大方案 + 小2大高级优化)、2026 主流嵌入模型选型(中文 BGE / 多语言 BGE-M3 / 英文 OpenAI,含 MTEB 榜单)、完整 Pipeline(LangChain 代码:文档摄入→向量化→检索→Rerank→生成→Ragas 评估)——三选一向量库(ChromaDB/FAISS/Milvus),一键部署脚本直接开用。

person作者: user_69009747hubcommunity

RAG 企业私有知识库一键搭建

概述

从零搭建生产级 RAG(检索增强生成)私有知识库。解决大模型三大痛点:幻觉、知识过时、私有数据无法接入。

一句话理解 RAG:给大模型配一个专属图书馆——先查资料,再回答问题。

适用场景:企业内部文档问答、客服知识库、合同审查、设备运维、新人培训答疑


前置环境

读取 references/environment.md 获取完整环境配置。

最小硬件要求

  • CPU: 4核+
  • 内存: 16GB+(运行大模型需要 GPU 或有足够内存)
  • Docker & Docker Compose
  • Python 3.10+

操作流程

Step 1: 一键启动环境

cd scripts
docker-compose up -d

启动服务:Milvus(向量库)、Ollama(本地大模型)、MinIO(对象存储)

# 验证服务
docker-compose ps

# 拉取模型(推荐 qwen2.5:7b)
ollama pull qwen2.5:7b

Step 2: 文档解析

读取 references/document-parsing.md 获取多格式解析详解。

支持格式

| 格式 | 解析库 | 注意事项 | |:---|:---|:---| | PDF | PyMuPDF / pdfplumber | 扫描件需OCR | | Word (.docx) | python-docx | 表格需特殊处理 | | Excel (.xlsx) | openpyxl / pandas | 多Sheet遍历 | | Markdown | 原生解析 | 保留标题层级 | | TXT | 原生解析 | 自动检测编码 | | 图片 | OCR (PaddleOCR) | 提取图中文字 |

Step 3: 分块策略

读取 references/chunking-strategy.md 获取分块策略详解。这是决定检索准确率的关键环节。

from langchain.text_splitter import RecursiveCharacterTextSplitter

# 推荐配置(中文场景)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,        # 每块512字符
    chunk_overlap=64,      # 重叠64字符,保持语义连贯
    separators=["\n\n", "\n", "。", ",", " ", ""],
    length_function=len,
)

chunks = text_splitter.split_documents(documents)

分块策略速查

| 场景 | chunk_size | chunk_overlap | 策略 | |:---|:---:|:---:|:---| | 制度文档 | 256 | 50 | 小分块+按章节 | | 技术文档 | 512 | 64 | 标准配置 | | 长文报告 | 1024 | 128 | 大分块+语义分割 | | FAQ | 128 | 0 | 按QA对分割 |

Step 4: 向量化存储

from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Milvus

# 使用 BGE 中文 Embedding 模型(C-MTEB榜首)
embeddings = HuggingFaceEmbeddings(
    model_name="BAAI/bge-large-zh-v1.5",
    model_kwargs={'device': 'cpu'},
    encode_kwargs={'normalize_embeddings': True}
)

# 存入 Milvus
vector_store = Milvus.from_documents(
    documents=chunks,
    embedding=embeddings,
    collection_name="my_knowledge_base",
    connection_args={"host": "localhost", "port": "19530"},
)

Step 5: 检索增强生成

读取 references/retrieval-strategies.md 获取检索策略详解。

推荐:混合检索(BM25 + 向量 + Rerank)

from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import BM25Retriever

# BM25 关键词检索
bm25_retriever = BM25Retriever.from_documents(chunks, k=5)

# 向量语义检索
vector_retriever = vector_store.as_retriever(search_kwargs={"k": 5})

# 混合检索
ensemble_retriever = EnsembleRetriever(
    retrievers=[bm25_retriever, vector_retriever],
    weights=[0.3, 0.7]  # 向量权重更高
)

# Rerank 重排(提升准确率)
from langchain.retrievers import ContextualCompressionRetriever
from langchain_community.document_compressors import BgeRerank

compressor = BgeRerank(model="BAAI/bge-reranker-large", top_n=3)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor,
    base_retriever=ensemble_retriever
)

Step 6: 问答链

from langchain.chains import RetrievalQA
from langchain_community.llms import Ollama

llm = Ollama(model="qwen2.5:7b", temperature=0.1)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    verbose=True
)

# 提问
result = qa_chain({"query": "公司的年假政策是什么?"})
print(result['result'])
print("参考来源:", [doc.metadata for doc in result['source_documents']])

Step 7(进阶): GraphRAG 知识图谱增强

读取 references/graphrag-guide.md 了解 GraphRAG 原理和实现。

GraphRAG 在传统 RAG 基础上增加知识图谱层,实现多跳推理和实体关系查询,是2026年企业级RAG的新标配。


检索效果对比

| 方案 | Top-1准确率 | Top-3准确率 | 适用场景 | |:---|:---:|:---:|:---| | 纯向量检索 | 72% | 85% | 通用场景 | | BM25+向量混合 | 81% | 91% | 含专有名词/缩写 | | 混合+Rerank | 88% | 95% | 高精度要求 | | GraphRAG | 92% | 97% | 多跳推理/复杂关系 |


常见场景速查

| 场景 | 关键步骤 | 参考 | |:---|:---|:---| | 内部制度问答 | Step 2-6 | PDF解析 + 小分块 | | 合同审查 | Step 2-6 | Word解析 + 段落级分块 | | 产品手册FAQ | Step 2-4 | 按QA对分割 | | 多跳推理 | Step 7 | GraphRAG知识图谱 | | 权限分级 | 见 references/rbac.md | Milvus Partition Key |


资源索引

| 资源 | 路径 | 用途 | |:---|:---|:---| | Docker环境 | scripts/docker-compose.yml | Milvus+Ollama+MinIO | | 一键搭建脚本 | scripts/setup_rag.py | Python全流程自动化 | | 环境说明 | references/environment.md | 环境要求与依赖 | | 文档解析 | references/document-parsing.md | 多格式解析详解 | | 分块策略 | references/chunking-strategy.md | 分块策略对比 | | 检索策略 | references/retrieval-strategies.md | 混合检索+Rerank | | GraphRAG | references/graphrag-guide.md | 知识图谱增强 | | RBAC权限 | references/rbac.md | 权限分级方案 |


注意事项

  • 中文场景首选 BGE 系列 Embedding 模型(bge-large-zh-v1.5
  • 首次运行需下载模型,耗时取决于网络,建议提前 ollama pull
  • Vector Store 索引构建时间随文档量线性增长
  • GraphRAG 适合 >500 页的复杂知识库,小型知识库使用混合检索即可
  • 生产环境建议 Milvus 集群模式 + GPU Embedding (内容由AI生成,仅供参考)