langchain4j [特性] Chroma:支持元数据过滤

ghg1uchk  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(31)

描述问题

我正在使用langcgain4j和spring-boot进行一个POC,以满足我们即将到来的项目需求。基本上,我们的要求是根据用户上传的文档之一或多个来聊天或提问。有多个用户上传了文档,答案必须针对用户上下文或基于他的文档。
因此,我在创建嵌入时添加了元数据信息userId。我使用的是chromadb,并通过Python验证了这一点,元数据已成功添加。
问题在于当我进行过滤时,我没有得到预期的结果。当我深入了解代码时,我发现在EmbeddingSearchRequest(以下函数)中传递给ChromaEmbeddingStore的过滤器。
default EmbeddingSearchResult<Embedded> search(EmbeddingSearchRequest request) { List<EmbeddingMatch<Embedded>> matches = this.findRelevant(request.queryEmbedding(), request.maxResults(), request.minScore()); return new EmbeddingSearchResult(matches); }
我的代码:https://github.com/anoopjohn02/spring-ai-langchain4j/blob/dc3027d7ca75c6231e5991c274a97c51715dfdef/src/main/java/com/anoop/ai/config/AIConfig.java#L106

日志和堆栈跟踪

NA

重现

按照仓库中的说明运行应用程序

预期行为

动态过滤器应根据userId过滤文档

请完成以下信息:

  • LangChain4j版本:0.32.0
  • 使用的LLM(s):OpenAI
  • Java版本:17
  • Spring Boot版本(如果适用):3.2.4
    其他上下文

查看https://github.com/anoopjohn02/spring-ai-langchain4j中的代码,并告诉我我的AI配置是否正确。

s5a0g9ez

s5a0g9ez1#

你好@anoopjohn02,元数据过滤在chroma中尚未实现。

a2mppw5e

a2mppw5e2#

你好,@Heezer,既然你已经实现了过滤以移除内容,那么你是否愿意为搜索也做同样的处理呢?我猜这会非常简单,因为ChromaMetadataFilterMapper已经在那里了。

hgncfbus

hgncfbus3#

感谢您的回复。我会密切关注这个问题。

uqzxnwby

uqzxnwby4#

大家好,是的,正在进行中

相关问题