Skip to content

可选的 embedding 语义检索 + OpenAI-compatible 流式 delta 处理 #45

@SanJoeng

Description

@SanJoeng

你好,先说明一下背景 🙏

昨晚在群里简单问过一次,但时间有点晚,所以把想法整理成 Issue,方便讨论,不涉及直接合并。

背景 / 动机

我在本地使用项目时,主要遇到两个点:

  1. 当聊天记录较多时,关键词搜索对一些“进展 / 是否 / 有没有提过”的问题命中率不高**
  2. 在使用 OpenAI-compatible 本地模型(如 Phi4 / Qwen /DeepSeek)时,部分模型会把增量文本放在 delta.reasoning 而不是 delta.content,导致流式输出异常或“自言自语”

这两个问题在我自己的使用场景下比较影响体验,所以尝试做了一些本地实验。


想讨论的方向(不是 PR)

1️⃣ 可选的 embedding-based 语义检索(非默认开启)

  • 前提:用户显式配置了 embeddingModel
  • 行为:
    • 先用 LLM 将自然语言 rewrite 成检索 query
    • 再用 embedding 在聊天记录中做语义匹配
    • 结果以“证据块”形式注入上下文
  • 目标:提升“有没有聊过 / 进展如何”类问题的命中率
  • 不打算替代现有工具,也不强制开启

2️⃣ OpenAI-compatible 流式 delta 的兼容处理

  • 部分模型会返回:
    • delta.reasoning
    • 或 content / reasoning 混合
  • 如果只消费 delta.content,会导致:
    • 前端无输出
    • 或模型 reasoning 被错误当作内容
  • 我的处理方式是:
    • 合并 delta.content + delta.reasoning
    • 不改变 tool_calls / finish_reason 行为

当前状态

  • 我已经在本地 fork中验证过:
    • embedding 检索逻辑是可行的
    • delta 合并可以解决流式异常
  • 想先确认:
    • 这些方向是否在项目的 scope 内
    • 哪些部分你认为不适合进入主项目

如果你觉得不合适 / 不想引入,我会单独维护一个 fork或扩展版本,不会影响主项目。

Image Image Image

感谢你维护这个项目 🙇

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions