作者您好。
感谢开源这个项目,我最近在学习 RAG,因此阅读了项目源码,并尝试进行了本地部署。
在本地部署时,我尝试使用了不同于默认环境的 Embedding 模型,因此阅读了一下 Retriever 的实现,希望确认自己的理解是否正确。我注意到 utils/retriever.py 中会先从 Chroma 获取 TopK 结果,然后使用固定的distance_threshold = 1.2进行二次过滤。同时,Collection 是通过 get_or_create_collection(name=collection_name) 创建的,我没有看到显式指定距离度量(例如 hnsw:space)的相关参数,不确定这是否是项目有意保持默认配置。
因此想请教几个问题:
- 1.2 是否是针对默认 Embedding 模型调试得到的经验值?
- 如果更换其他 Embedding 模型,不同模型的向量距离分布可能存在差异,那么固定使用 distance_threshold = 1.2 是否可能影响检索结果?
- 后续是否考虑把这个阈值做成可配置项,方便不同 Embedding 模型进行调整?
我本地测试时,去掉这一层固定阈值过滤,仅保留 Chroma 返回的 TopK 后,在我的部署环境中检索结果更加符合预期。。因此猜测问题可能与不同 Embedding 模型的距离分布有关,但不确定是否符合项目原本的设计,所以想向您请教一下。
如果我的理解有误,也欢迎您指出。如果需要的话,我也可以提供我的测试环境和修改后的配置,方便进一步定位原因。
感谢您的时间,也再次感谢您的开源分享!
作者您好。
感谢开源这个项目,我最近在学习 RAG,因此阅读了项目源码,并尝试进行了本地部署。
在本地部署时,我尝试使用了不同于默认环境的 Embedding 模型,因此阅读了一下 Retriever 的实现,希望确认自己的理解是否正确。我注意到 utils/retriever.py 中会先从 Chroma 获取 TopK 结果,然后使用固定的distance_threshold = 1.2进行二次过滤。同时,Collection 是通过 get_or_create_collection(name=collection_name) 创建的,我没有看到显式指定距离度量(例如 hnsw:space)的相关参数,不确定这是否是项目有意保持默认配置。
因此想请教几个问题:
我本地测试时,去掉这一层固定阈值过滤,仅保留 Chroma 返回的 TopK 后,在我的部署环境中检索结果更加符合预期。。因此猜测问题可能与不同 Embedding 模型的距离分布有关,但不确定是否符合项目原本的设计,所以想向您请教一下。
如果我的理解有误,也欢迎您指出。如果需要的话,我也可以提供我的测试环境和修改后的配置,方便进一步定位原因。
感谢您的时间,也再次感谢您的开源分享!