Skip to content

关于 Retriever 中固定 distance_threshold 与 Embedding 模型适配性的一个疑问 #2

Description

@26atu

作者您好。
感谢开源这个项目,我最近在学习 RAG,因此阅读了项目源码,并尝试进行了本地部署。
在本地部署时,我尝试使用了不同于默认环境的 Embedding 模型,因此阅读了一下 Retriever 的实现,希望确认自己的理解是否正确。我注意到 utils/retriever.py 中会先从 Chroma 获取 TopK 结果,然后使用固定的distance_threshold = 1.2进行二次过滤。同时,Collection 是通过 get_or_create_collection(name=collection_name) 创建的,我没有看到显式指定距离度量(例如 hnsw:space)的相关参数,不确定这是否是项目有意保持默认配置。
因此想请教几个问题:

  1. 1.2 是否是针对默认 Embedding 模型调试得到的经验值?
  2. 如果更换其他 Embedding 模型,不同模型的向量距离分布可能存在差异,那么固定使用 distance_threshold = 1.2 是否可能影响检索结果?
  3. 后续是否考虑把这个阈值做成可配置项,方便不同 Embedding 模型进行调整?
    我本地测试时,去掉这一层固定阈值过滤,仅保留 Chroma 返回的 TopK 后,在我的部署环境中检索结果更加符合预期。。因此猜测问题可能与不同 Embedding 模型的距离分布有关,但不确定是否符合项目原本的设计,所以想向您请教一下。
    如果我的理解有误,也欢迎您指出。如果需要的话,我也可以提供我的测试环境和修改后的配置,方便进一步定位原因。
    感谢您的时间,也再次感谢您的开源分享!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions