Files
AIclinicalresearch/docs/08-项目管理/01-知识库引擎架构设计_v1.2.md
HaHafeng 40c2f8e148 feat(rag): Complete RAG engine implementation with pgvector
Major Features:
- Created ekb_schema (13th schema) with 3 tables: KB/Document/Chunk
- Implemented EmbeddingService (text-embedding-v4, 1024-dim vectors)
- Implemented ChunkService (smart Markdown chunking)
- Implemented VectorSearchService (multi-query + hybrid search)
- Implemented RerankService (qwen3-rerank)
- Integrated DeepSeek V3 QueryRewriter for cross-language search
- Python service: Added pymupdf4llm for PDF-to-Markdown conversion
- PKB: Dual-mode adapter (pgvector/dify/hybrid)

Architecture:
- Brain-Hand Model: Business layer (DeepSeek) + Engine layer (pgvector)
- Cross-language support: Chinese query matches English documents
- Small Embedding (1024) + Strong Reranker strategy

Performance:
- End-to-end latency: 2.5s
- Cost per query: 0.0025 RMB
- Accuracy improvement: +20.5% (cross-language)

Tests:
- test-embedding-service.ts: Vector embedding verified
- test-rag-e2e.ts: Full pipeline tested
- test-rerank.ts: Rerank quality validated
- test-query-rewrite.ts: Cross-language search verified
- test-pdf-ingest.ts: Real PDF document tested (Dongen 2003.pdf)

Documentation:
- Added 05-RAG-Engine-User-Guide.md
- Added 02-Document-Processing-User-Guide.md
- Updated system status documentation

Status: Production ready
2026-01-21 20:24:29 +08:00

120 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **知识库引擎架构设计**
文档版本: v1.2 (架构审核优化版)
创建日期: 2026-01-20
最后更新: 2026-01-20
核心变更: 强调异步入库、中文检索方案、成本控制策略
能力定位: 通用能力层
## **📋 概述**
### **能力定位**
知识库引擎是平台的**核心通用能力**,提供知识库相关的**基础能力(乐高积木)**,供业务模块根据场景自由组合。
### **⭐ 核心设计原则**
┌─────────────────────────────────────────────────────────────┐
│ │
│ ✅ 提供基础能力(乐高积木) │
│ ❌ 不做策略选择(组装方案由业务模块决定) │
│ ⚡️ 入库必须异步(防止超时) │
│ 💰 提取按需开启(控制成本) │
│ │
└─────────────────────────────────────────────────────────────┘
## **🎯 基础能力清单 (API Definition)**
### **1\. 文档入库 (异步核心)**
/\*\*
\* 文档入库任务提交
\* @returns taskId \- 用于轮询进度
\*/
async function submitIngestTask(params: {
kbId: string;
file: Buffer;
options?: {
// 💰 成本控制开关
enableSummary?: boolean; // 是否生成摘要 (DeepSeek)
enableClinicalExtraction?: boolean; // 是否提取PICO (DeepSeek)
chunkSize?: number; // 切片大小
}
}): Promise\<{ taskId: string }\>;
/\*\*
\* 获取任务状态
\*/
async function getIngestStatus(taskId: string): Promise\<{
status: 'pending' | 'processing' | 'completed' | 'failed';
progress: number; // 0-100
error?: string;
}\>;
### **2\. 内容获取 (数据积木)**
| 方法 | 说明 | 典型场景 |
| :---- | :---- | :---- |
| getDocumentFullText(id) | 获取 Markdown 全文 | 少量文档精读 (PKB) |
| getDocumentSummary(id) | 获取 AI 生成的摘要 | 快速筛选 (AIA) |
| getClinicalData(id) | 获取 PICO/JSON 结构化数据 | 药物评价 (ASL) |
### **3\. 检索能力 (搜索积木)**
| 方法 | 说明 | 技术实现 |
| :---- | :---- | :---- |
| vectorSearch(query, k) | 语义检索 | pgvector (HNSW) |
| keywordSearch(query, k) | 关键词检索 | **pg\_trgm (ILIKE)** / tsvector |
| hybridSearch(query, k) | 混合检索 | RRF 融合算法 |
| rerank(docs, query) | **\[新增\]** 重排序 | Qwen-Rerank API |
## **🏗️ 关键技术决策**
### **1\. 中文关键词检索方案**
鉴于 PostgreSQL 默认分词对中文支持不佳,且 RDS 插件管理受限,采用 **pg\_trgm (Trigram)** 方案。
* **优势**:对模糊匹配(如 "帕博利珠" 匹配 "帕博利珠单抗")效果极佳,配置简单。
* **实现**
\-- 开启插件
CREATE EXTENSION IF NOT EXISTS pg\_trgm;
\-- 创建索引
CREATE INDEX trgm\_idx ON "ekb\_schema"."EkbChunk" USING gin (content gin\_trgm\_ops);
\-- 查询
SELECT \* FROM chunk WHERE content ILIKE '%关键词%';
### **2\. 成本控制策略**
* **默认行为**ingestDocument 默认**只做** 解析 \+ 切片 \+ 向量化。这是零 LLM 成本的。
* **高级行为**:只有当 enableClinicalExtraction: true 时,才调用 DeepSeek 进行 PICO 提取。这通常用于 ASL智能文献模块而在 PKB个人知识库中可选开启。
## **📊 业务模块策略组合 (Updated)**
### **场景 1ASL 智能文献筛选 (高精度)**
* **入库**:开启 enableClinicalExtraction提取 PICO 和 结果数据。
* **检索**
1. **SQL 粗筛**WHERE pico-\>\>'P' ILIKE '%肺癌%'
2. **混合检索**hybridSearch (Top 50\)
3. **重排序**rerank (Top 10\)
4. **回答**:基于 Top 10 生成。
### **场景 2PKB 个人知识库 (低成本)**
* **入库**:关闭高级提取,仅做向量化。
* **检索**
1. **混合检索**hybridSearch (Top 20\)
2. **回答**:基于 Top 20 生成。
## **📅 更新日志**
### **v1.2 (2026-01-20)**
* ⚡️ **架构调整**:入库接口改为异步,返回 taskId。
* 🔧 **技术选型**:关键词检索明确使用 pg\_trgm 方案以支持中文。
* 💰 **策略优化**:增加 options 开关,默认关闭高成本提取功能。
* 🆕 **新增接口**:独立暴露 rerank() 能力。
### **v1.1 (2026-01-20)**
* 确立“积木”原则,移除 Chat 方法。