RAG 知识库

检索增强生成:让 AI 拥有你的专属知识

什么是 RAG

RAG (Retrieval-Augmented Generation) 是一种将检索和生成相结合的技术。 它先从知识库中检索相关文档,然后将检索结果作为上下文传递给 LLM,从而让 AI 能够回答训练数据中没有的问题。

RAG 工作流程

?
用户问题
S
向量检索
+
上下文组装
G
LLM 生成
A
回答

支持的向量数据库

Qdrant推荐

高性能,支持过滤

Milvus企业

分布式,大规模

Pinecone云服务

云托管,零运维

Weaviate开源

语义搜索强

Chroma开发

轻量级,本地

Pgvector集成

PostgreSQL 扩展

文档处理流程

1. 文档加载

支持多种文档格式的解析

PDFWordMarkdownTXTHTMLCode

2. 文本分块

将长文档切分为适合检索的块

固定长度
按字符数切分,适合通用场景
语义分块
按段落语义边界切分
递归分块
层级结构,保留上下文

3. 向量化

使用 Embedding 模型将文本转为向量

OpenAI text-embedding-3Cohere embedBGEM3E本地模型

4. 索引存储

将向量和元数据存入向量数据库

配置示例

rag/config.yaml
# RAG 配置
vector_store:
  type: qdrant
  host: localhost
  port: 6333
  collection: axoncog_knowledge

embedding:
  model: text-embedding-3-small
  dimension: 1536
  batch_size: 100

chunking:
  strategy: recursive
  chunk_size: 500
  chunk_overlap: 50
  separators: ["\n\n", "\n", " ", ""]

retrieval:
  top_k: 5
  score_threshold: 0.7
  rerank: true
  rerank_model: cohere-rerank

documents:
  paths:
    - "./docs/**/*.md"
    - "./knowledge/**/*.pdf"
  watch: true  # 监听文件变化自动更新

API 示例

上传文档POST
POST /api/rag/documents/upload
Content-Type: multipart/form-data

file: document.pdf
collection: my_knowledge

Response:
{
  "document_id": "doc-12345",
  "chunks": 42,
  "status": "indexed"
}
知识检索POST
POST /api/rag/search
Content-Type: application/json

{
  "query": "如何配置世界模型?",
  "top_k": 5,
  "collection": "my_knowledge",
  "filter": {
    "type": "documentation"
  }
}

Response:
{
  "results": [
    {
      "chunk_id": "chunk-001",
      "content": "世界模型配置...",
      "score": 0.89,
      "metadata": {
        "source": "docs/world-model.md",
        "page": 1
      }
    }
  ]
}

混合检索策略

向量检索

基于语义相似度,能理解同义词和概念关联,适合模糊查询。

关键词检索

基于精确匹配,适合专有名词、代码、ID 等精确查询。

混合模式 (推荐)

同时使用向量检索和关键词检索,然后融合排序,获得最佳检索效果。

知识图谱增强

除了向量检索,还支持构建知识图谱,通过实体关系进行推理检索。

实体提取

自动识别文档中的实体

关系抽取

建立实体之间的关联

图检索

通过关系链发现知识