用途:为基于文档的AI助手设计端到端RAG管线,提升文档检索与生成的准确性。
管线架构:文档→分块→嵌入→向量库→检索→重排序→生成。
主要能力:
- 分块策略:示例采用RecursiveCharacterTextSplitter,chunk_size=1000、chunk_overlap=200,并为每个分块添加元数据(来源、页码、chunk_id等)。
- 元数据schema:定义ChunkMetadata接口,包含来源信息、位置、内容分类、时间戳、检索优化字段(keywords、summary、importance_score)。
- 向量库:以Pinecone为例,结合OpenAIEmbeddings(model="text-embedding-3-small")建立索引,如index_name="knowledge-base"、namespace="production"。
- 检索策略:混合检索(稠密+稀疏),用reciprocal_rank_fusion合并,再取top-k;支持metadata过滤。
- 重排序:使用CrossEncoder(如cross-encoder/ms-marco-MiniLM-L-6-v2)对结果打分排序。
- 查询增强:查询扩展与多查询检索,去重后重排序。
- 评估:用golden dataset,计算precision、recall、mrr、ndcg等指标。
- 上下文窗口管理:按token上限选择分块,避免超模型限制。
最佳实践:通用文本分块500-1000字符,重叠10%-20%,使用丰富元数据支持过滤,结合语义与关键词检索,交叉编码器最终排序,建立评估基线。
限制:资料未提供具体平台依赖版本、价格、部署方式及完整运行环境;部分函数(如bm25_search、llm、count_tokens、deduplicate)仅为示意,需自行实现。