Agent-Fox (beta)

Agent-Fox 智能助手

基于 LangChain 的智能搜索助手,使用反思型多轮对话技术

👋 您好!我是 Agent-Fox 智能助手。我可以帮您搜索和分析信息。请告诉我您想了解什么?

bug记录:

  1. 向量库屏蔽没有做好,目前私密文章过滤掉了,但是密码保护的文章可以被向量库索引到,应该添加硬过滤。同时,如果一篇文章已经出现在向量库中,当公开状态变为私密或密码保护时,也应当执行从向量库清空的处理。等下,更好的逻辑应该是,向量库不过滤。只是索引的时候添加过滤选项,通过返回文段的meta信息过滤。这样,已登录用户还是可以享受到私密和密码保护文章的向量检索。
  2. 现在的迭代逻辑太简陋,下一步改进方向应该让第一步查询变成检索方案规划,然后调用多个LLM并发执行第一步规划的检索任务。最后再汇总。执行下一轮的“规划→执行”。最终一步汇总成最终答案回复用户。
  3. 但是这样一来上下文就太太太长了,所以在每一步执行结束之后应该再加一步内容压缩。因为检索回来的结果肯定没用的居多。内容压缩的逻辑应该是逐一判断每个文段是否与检索词相关,不相关就丢弃,对于相关的文段,也应当进一步提取这一段中具体哪几句话跟检索词相关,其他句子也删掉。由于是逐个文段判断,这一步也应该并发调用LLM,但应该手动限制并发数量,比如zhipu api最大并发数是30。同时用速度快的flash模型。
  4. 规划→并发执行→并发内容压缩→汇总→第二轮规划→并发执行→并发内容压缩→汇总→第三轮规划……
  5. 每一次“规划任务”的上下文应当包括每一次迭代的“汇总”信息。可以把这个整合步骤放在每一轮“汇总”阶段,直接跟上一轮的汇总文本合并。这时还应当加一步去重操作,这个不用调用LLM,因为向量库返回的文段是固定的,可以直接Python过滤掉。
  6. 另外我发现,几乎很少会用到关键词匹配,关键词能查到的内容,向量查询也能。而且如果用原生wordpress的关键词查询只能返回整篇文章或摘要,不能具体到段落,跟向量查询融合的不好。非要用关键词匹配的话,需要在向量库api里加一个端点直接从向量库而不是Mysql数据库查询。这样可以规范返回的格式。
  7. 还有一个问题是需不需要专门写入中间信息到文件,目前感觉存在python变量就够用了。
第二轮规划示例
{
  "plan_reasoning": "当前信息已确认博主与'宋同学'有关,但关系细节不足。下一步需深入挖掘'宋同学'的具体事迹并探索博主的其他社交圈。",
  "tasks": [
    {
      "task_id": "task_001",
      "query": "宋同学",
      "tool": "search_posts_by_content",
      "description": "精确查找所有提及'宋同学'的段落。"
    },
    {
      "task_id": "task_002",
      "query": "博主的朋友圈、同事、家人",
      "tool": "semantic_vector_search",
      "description": "模糊搜索与博主社交网络相关的文章。"
    },
    {
      "task_id": "task_003",
      "query": "聚会 OR 合作 OR 交流",
      "tool": "search_posts_by_content",
      "description": "关键词搜索描述社交活动场景的段落。"
    }
  ]
}
内容压缩示例
用户的原始问题是'博主的社会关系'
当前正在处理的任务是'查找博主提到的朋友姓名'

--- 文档内容开始 ---
{单个文档片段的文本}
--- 文档内容结束 ---

请判断以上文档内容是否与当前任务'查找博主提到的朋友姓名'直接相关
请只回答 "相关"  "不相关"
最后一轮迭代后的汇总
用户的问题是'博主的社会关系'

通过搜索我收集到了以下高度相关的信息片段
[
    "从《与宋同学的毕业告别谈话》中提取的片段...",
    "从《三观》中提取的片段...",
    "从另一篇文章中提取的片段..."
]

请基于以上信息生成一个全面准确的回答

评论

1 + 5 = ?
您的邮箱地址不会被公开。必填项已用 * 标注 如遇验证码无法通过,请勿使用无痕/隐私浏览器模式