Skip to content
字数
469 字
阅读时间
2 分钟

确定三个核心问题

  1. source list 从哪些地方检索数据
  2. answer prompt 使用什么提示词模板回复
  3. llm model 使用哪个大语言模型回复

搜索前 query rewrite

  1. 结合历史消息,判断当前 query 是否需要 retrieve
  2. 结合历史消息,做指代消解,把代词替换成具体的名词
  3. 从指代消解后的 query 提取关键词 keywords

RAG 流程

  1. 使用 query + keywords 作为入参,从 source list 获取检索结果(在线 API 检索 + 本地 index 检索),必要时可对 query + keywords 进行翻译,使用不同语言进行多轮检索
  2. 检索结果聚合重排 reranking
  3. 获取重排后 top_k 条内容详情
  4. 使用回复提示词 + 检索内容 + 历史消息作为 context,带上最新 query 请求 LLM 回复

主要工程量

  1. 对内容源 build index

对于没有标准 API 的 source,需要对 source 站点的数据构建索引。增量构建使用 source 的搜索框,存量构建使用搜索引擎网页快照,很难拿到某个 source 的全量数据

  1. 更新 source 权重

系统预置权重 + 用户点击更新 source 权重,多信息源检索时依据 source 权重返回结果数量和初始排序

  1. 多信息源重排

需要一个高效/快速的 reranking 框架,比如 FlashRank

  1. 构建 chunk 内容池

对检索到的内容进行 chunk 拆分,存储向量数据库,挂载上下文请求 LLM 回答时,相似度匹配部分内容,避免暴力传输

  1. 构建关键词库

定期分析历史 query,提取热搜关键词,构建关键词库。命中关键词库的 query,retrieve 环节走缓存

贡献者

The avatar of contributor named as jiechen jiechen

页面历史

撰写