金融服务 / 脱敏金融机构内部知识工作团队
投研问答 RAG 系统:让回答能回到来源
知识工作者需要在内部材料和高频新闻中快速找到证据,同时保留时间语义、上下文追问和来源追溯。
我参与搭建了一个两阶段 RAG 问答流程:先基于对话上下文改写问题并解析时间、实体和关键词,再通过混合检索召回材料,最后只基于证据生成带引用的流式回答。
对话上下文 -> 问题改写 -> 时间与实体解析 -> 标签优先与混合检索 -> 证据筛选 -> 带来源的 SSE 流式回答。
系统接入数万份内部研报与千万级新闻材料,提问后约 3–5 秒开始流式输出、十余秒给出带来源的完整回答,并支持十余轮连续追问而不丢主题;证据不足时拒答,把使用者的时间从找资料转向判断材料。
投研问答真正难的不是让模型开口,而是让每一句判断都能回到可信材料里。
背景
这个项目服务于金融机构内部知识问答场景。用户需要同时查询内部材料和市场新闻,公开搜索覆盖不了内部观点,传统检索又很难承接“继续问”“换个时间口径”“它最近怎么样”这类自然表达。
目标不是做一个泛用聊天框,而是让分析师或顾问用接近日常沟通的方式提问,系统能找到相关材料、综合回答、标出来源,并在证据不足时明确说明不能下结论。

真正麻烦的地方
材料形态不一致。研报多来自 PDF,结构和标签相对稳定;新闻更新快,格式更散,噪声也更多。如果把两类材料简单丢进同一个向量库,召回结果看似丰富,但解释性和稳定性都会下降。
用户问题也不是干净的检索词。上下文里的指代、主题切换、模糊时间都会影响召回范围。“最近”在不同问题里可能代表不同观察窗口;“它”可能指上一轮里的公司、行业或宏观事件。检索前如果不处理这些问题,后面的生成再强也只是补救。
我参与的部分
我主要参与了问答链路的设计和实现,把流程拆成“理解问题”和“基于证据回答”两个阶段。
第一阶段由模型做结构化改写:结合近期对话,把口语问题改写成独立问题,同时解析时间范围、实体、关键词和可用于检索的标签。这个阶段更看重稳定输出和速度,而不是长篇推理。
第二阶段是检索和回答。项目使用混合检索:在分类体系可靠的场景下优先走标签匹配,因为它更容易解释,也更符合团队已有的资料组织方式;对标签覆盖不到或表达更开放的问题,再结合关键词和向量召回补足。进入生成前,会筛掉弱相关片段,只把可引用的证据交给回答模型。
回答通过 SSE 流式返回,前端不必等完整内容生成完才展示。关键结论要求附带研报或新闻来源,用户可以回到原文核对。检索证据不足时,系统会明确拒绝给出结论,而不是让模型凭常识补齐。

取舍
两阶段 LLM 比单次调用复杂一些,但边界更清楚:前一段负责把人话变成可检索的结构,后一段负责在证据范围内组织回答。这样更容易定位问题,是改写错了、召回偏了,还是生成没有守住证据。
检索上没有把向量相似度当成唯一答案。金融机构内部标签体系本身承载了业务经验,可靠时应当先用;向量检索适合补充语义表达差异,而不是替代所有结构化线索。
结果
系统接入了数万份内部研报与千万级新闻材料后,能够支持连续追问、时间口径调整和主题切换。提问后约 3–5 秒开始流式输出,十余秒给出带来源的完整回答,可支撑十余轮连续追问而不丢主题;使用者能先看结论,再点开可点击的来源回到原文判断是否采信。
这类 RAG 系统的价值不在于“回答得像人”,而在于它把资料、来源、时间和拒答边界放回了知识工作流程里。对严肃知识工作来说,可信比流畅更重要。
相关链接
如果你正在做企业 RAG、知识库、AI 客服或 Agent 工作流,可以通过下方微信二维码或邮件沟通,邮箱:contact@aildnc.com。
联系
讨论类似项目
如果你正在评估类似的文档解析、企业 RAG、知识库或 AI 工作流,可以先发问题背景。 微信沟通优先,邮箱也可以:contact@aildnc.com。
扫码加微信沟通