【代码评审】生产级 RAG 助手:混合检索、RRF、父子分块与 Promptfoo 评估(Python/FastAPI/Postgres)

Reddit r/AI_Agents 工具

摘要

一位开发者分享了一个基于 Python/FastAPI 构建的生产级 RAG 助手,该助手采用混合检索(pgvector + Postgres 全文搜索,通过 RRF 融合)、父子分块、交叉编码器重排序以及基于 Promptfoo 的评估体系,正在寻求代码评审和架构方面的反馈。

大家好,我最近用 Python/FastAPI 构建了一个端到端的企业级 RAG 助手,旨在针对复杂的多页财务报表(10-K)和法律合同回答有据可查的问题。我已经搭建了一套完整的混合检索和评估流程,但非常希望能有人以全新的视角来审视架构和代码库,看看有哪些可以改进的地方。GitHub 仓库:[链接见评论] **核心架构亮点:** - **数据摄取与解析:** 使用 pdfplumber 进行表格感知解析(可重建碎片化的多栏 PDF 表格)。 - **检索管线:** 父子分块(子块约 200 token,父块约 700 token)+ 混合搜索(稠密向量 pgvector + 稀疏 Postgres 全文搜索),通过倒数排名融合(RRF)进行融合,并使用交叉编码器(bge-reranker-base)进行重排序。 - **保证排名槽位:** 实现了自定义的保证槽位(RERANK_GUARANTEED_PER_LIST),防止交叉编码器对签名行、表格行等短文本片段评分过低。 - **评估:** 自动化的免 LLM 检索评估脚本(Recall@K、MRR)+ Promptfoo 端到端测试套件(20 条断言,检查上下文忠实度和数值精确度)。 - **安全护栏:** 多租户隔离(X-Tenant-ID)、PII 脱敏,以及引用/数值输出防护。 **我特别希望获得的反馈:** - **交叉编码器延迟与优化:** 在更高并发负载下,你会如何优化或扩展交叉编码器这一步骤? - **表格提取边界情况:** 你是否使用过更优雅的模式或库来重构被拆分的表格,而不浪费 token 预算? - **Python / FastAPI 代码组织:** 对 backend/app/ 目录下的代码结构、异步执行或配置模式的任何反馈都会非常有帮助。 提前感谢大家的关注!也非常欢迎直接在 GitHub 上对 PR 或 Issue 提出反馈。
查看原文

相似文章

为语义代码搜索构建 RAG 流水线

Lobsters Hottest

JetBrains 开发者分享了构建生产级语义代码搜索(Air Context)RAG 流水线的实战笔记,涵盖解析、分块和向量化,这是该系列文章的第一部分,旨在为 LLM 编程智能体提供来自大型代码库的精确、可引用的证据。

能坦承"我不知道"的生产级 RAG 流水线

Reddit r/ArtificialInteligence

介绍如何用 Postgres + pgvector、FastAPI、Gemini、Celery 和 Redis 构建生产级 RAG 流水线:答案引用来源、在不知道时拒绝回答,并在数据库层面强制执行行级安全。