知识问答:UltraRAG
原理介绍
清小搭的知识问答覆盖了检索问答、问题推荐、 来源引用、个性化回复等功能:
- 检索问答 明确用户问题,检索清小搭知识库,引用最新的知识片段回答用户问题
- 问题推荐 根据用户的提问,推荐其后续更加感兴趣的问题
- 来源引用 对于清小搭的回复,标注名引用的文章来源,并且在源文档高亮参考的文本信息
- 个性化回复 结合个人成长档案,给出个性化回复

检索问答
检索问答的核心问题是如何检索到正确的知识,为了帮助提升检索效果,我们考虑通过以下几个途径优化检索:
-
上下文改写: 用于理解用户问题的核心意图,并重新组织语言,改写后的问题变成一个包含上下文的完整问题,例如:“今天天气怎么样” 被改写成 “XX月XX日天气怎么样”
-
混合检索: 我们采用使用语义检索和词文检索两种互补的检索方式提升检索效果,语义检索更关注于语境的相似度,词文检索更关注于用词的准确性,比如 “老王是谁” 和 ”小王是谁“
-
时效性问题: 在检索过程中会根据知识库的切片到期时间,过滤掉过期的切片,同时在做生成时将切片发布时间的信息作为metadata的一部分交给模型,让模型去选择更准确的切片
-
正别名替换: 除了算法上的实现,我们也会构造一些正别名列表,用于规范化用户表述中的”黑话“,例如:“贵系”、“美图”等
-
网络检索: 有些用户问题无法通过知识库检索获取,必须通过网络搜索获取到有效信息,例如:“今天是星期几”、“今天天气怎么样”,通过意图识别+工具调用可以解决此类问题
个性化回复
个性化回复是通过结合用户画像信息,为用户提供更加个性化和精准的答案。以下是一个简单示例:
某文学院学生: 请推荐一门选修课
个性化回复: 考虑到您的文学专业背景和对戏曲艺术的兴趣,建议您选修 ···
通用性回复: 好的,我可以先给你几个通用推荐方向: ···
这个示例展示了如何利用用户的专业背景信息来提供定制化的课程推荐。在实际应用中,个性化回复的范围更加广泛,系统会:
- 实时记录用户对话内容
- 自动提取关键的个性化信息(如兴趣爱好、专业背景等)
- 在后续对话中智能运用这些信息,提供更有针对性的回答
个性化回复的核心机制是通过对话流实时提取用户个人信息。每轮对话结束后,系统会:
- 触发摘要生成,提取重要的个性化信息
- 将新信息更新至用户档案
- 使用向量数据库存储这些档案信息,以支持高效的相关性检索
为了确保信息的质量和隐私保护,系统对收集的个人信息进行了严格限制:
- 仅收集用户的兴趣爱好、学习偏好等非敏感信息
- 用户可以通过档案管理系统查看和编辑个人信息
- 所有信息的收集和使用都遵循隐私保护原则

来源引用
来源引用指的是在回复的每段话后面有一个引用标号,点开之后可以看到清小搭参考的文献信息,同时高亮区域标出清小搭具体参考的文字片段。具体地,在模型流式输出的过程中,清小搭一般会截取每一个片段和候选的topn个切片做相似度判断,你可以用reranker或者embedding的方式去做,也可以用TF-IDF的方式去做,绝大部分场景下模型会引用原文回复,因此TF-IDF匹配候选文档的方法更快而且准确度足够。计算出得分最高的候选之后,假如模型输出的片段和候选文档的相似度得分足够高,则视为一个引用。
问题推荐
问题推荐是在每次用户回答完之后,推荐几个相关话题的问题,如果用户感兴趣,则可以直接点击问题获取相应答案,这类功能 基本上是通过大模型prompt 实现。
效果展示