个人开发作品 · Agentic RAG

智能论文知识服务

把一批论文做成可检索的知识库:提问时先找文献片段,再组织回答,并把出处带回来。
目标是「文献里怎么说」,而不是让模型脱离语料自由发挥。

打开问答界面 阅读说明

这是做什么的

面向已整理文献的问答入口,回答能指到来源。

面向 arXiv 一类文献。先把论文切成片段、写入检索索引;用户提问时,系统在索引里找出相关片段,再由大模型根据这些片段作答。回答应能指到来源,便于核对,而不是只给一段无法追查的文字。 同一套流程也可以接到测绘规范、项目报告或政策文件上,做成可追溯的行业资料问答。

适合问什么

针对当前已入库文献,而不是全网搜索。

📄
文献里怎么写
这批文献里某方法、某结论是怎么表述的,适合核对原文口径。
⚖️
已收录论文的对比
对比若干篇已入库论文的差异(检索能命中时),而不是凭印象总结。
🔗
带来源的摘要
哪一段支撑了这句话,回答应能指回片段,便于复查。

从入库到回答

切块、混合检索、再生成,而不是让模型直接作答。

入库

从 arXiv 拉取元数据与 PDF,解析正文,按重叠窗口切成片段。一篇论文对应多条片段。

索引

片段写入 OpenSearch:同时有倒排(BM25)和向量。PostgreSQL 保存论文级元数据,不参与片段排序。

检索

提问时做关键词与向量混合检索,必要时按 arXiv 类目过滤,取出 Top-K 片段作为上下文。

生成

大模型根据片段组织回答,并带上来源。可选 Redis 缓存完全相同的问题,避免重复检索。

Agentic RAG 比普通 RAG 多了什么

用 LangGraph 把步骤串起来,而不是只跑一轮检索。

普通 RAG 是「检索一次 → 把片段塞进提示 → 生成」。语料对路时够用;问题含糊、范围不对、或第一次没命中时,容易答非所问或编造。这里把范围判断、相关性筛选和查询改写做成可执行步骤。

🧭
先判断范围
问题是否落在当前语料内;明显跑题可以拒绝,而不是硬答。
🔁
筛选与改写
对检索结果做相关性筛选;片段不够时改写查询再检索。
📚
带来源的回答
最后才生成,并保留检索次数与来源,便于核对这句话从哪来。

对话界面走流式输出,看起来像聊天;后台仍是检索加生成,不是无根据闲聊。

同一套方法还能用在哪

论文只是当前语料。

把「切块 → 混合检索 → 带来源的回答」接到规范、项目文档或内部报告上,就可以做成可追溯的资料问答,减少「模型凭印象说、无法核对」的情况。

技术栈

前端静态对话页;后端 FastAPI;检索 OpenSearch(BM25 + 向量 + RRF);编排 LangGraph。

LangGraph OpenSearch 混合检索 FastAPI PostgreSQL Redis Jina MiniMax Docker

打开问答界面

进入原来的对话页,查看布局与技术栈说明,并输入问题。

进入学术论文智能问答