平台开发与集成指南
概览
从文档上传到引用溯源,完整覆盖 RAG 全链路。 支持向量 + BM25 + 知识图谱三路混合检索,中文友好分词,多语言全覆盖。
RAG(Retrieval-Augmented Generation,检索增强生成)是大模型与外部知识结合的核心技术: 用户提问 → 先从知识库检索相关片段 → 把片段塞入 Prompt → LLM 基于片段生成答案。
解决三大痛点:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1.上传 │ → │ 2.解析 │ → │ 3.切块 │ → │ 4.向量化 │ → │ 5.入库 │
│ PDF/Word │ │ OCR/表格 │ │ Chunking │ │ Embedding│ │ PG+pgv │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
↓
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 10.引用 │ ← │ 9.生成 │ ← │ 8.Rerank │ ← │ 7.融合 │ ← │ 6.检索 │
│ 溯源 │ │ LLM 答 │ │ Cross │ │ RRF │ │ 向量+BM25│
│ [doc:p3] │ │ +引用 │ │ Encoder │ │ Recipro │ │ +知识图谱│
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘# 通过 API 创建
curl -X POST https://api.aizhs.top/v1/knowledge-bases \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"name": "产品手册库",
"description": "公司全部产品手册 + FAQ",
"embedding_model": "bge-m3",
"chunk_strategy": "paragraph",
"chunk_size": 512,
"chunk_overlap": 64
}'
# 上传文档
curl -X POST https://api.aizhs.top/v1/knowledge-bases/$KB_ID/documents \
-H "Authorization: Bearer $JWT" \
-F "file=@product-manual.pdf" \
-F "file=@faq.docx"纯向量检索对"专有名词 / 代码 / 型号"等关键词不敏感,纯 BM25 对"语义相似但措辞不同"的问题失效。 智汇 AI 采用三路并发 + RRF 融合,兼顾语义与关键词:
① 向量检索
bge-m3 编码 query → pgvector HNSW 查询 → 返回 Top-20 语义相似片段
② BM25 关键词
jieba 中文分词 + ts_vector → PostgreSQL 全文检索 → 返回 Top-20 关键词匹配片段
③ 知识图谱
LLM 抽取实体 + 关系 → Neo4j 图查询 → 返回关联实体片段(解决多跳推理)
RRF 融合公式
score(d) = Σ 1 / (k + rank_i(d)) # k=60, rank_i = 文档在第 i 路结果中的排名三路结果按 RRF 重新排序 → 取 Top-20 给 Reranker
智汇 AI 的每个 RAG 回答都附引用编号 [1] [2] [3],点击跳转到原文位置并高亮:
用户问:产品 X 的保修期是多久?
LLM 答:产品 X 的标准保修期为 24 个月 [1],若购买延保服务可延长至 36 个月 [2]。
保修范围涵盖主机和原装附件 [1],不含人为损坏 [3]。
引用:
[1] product-x-manual.pdf 第 12 页 §保修条款
[2] extended-warranty.docx 第 2 页
[3] faq.docx 第 8 行反幻觉机制:LLM 被系统提示约束为"只能基于检索片段回答,无关内容回答'文档中未提及'", 若检索片段为空或相关性低,会直接告知"未在知识库中找到答案"而非编造。
切块策略
文档质量
定期更新
成本控制