Spring ai vectorstore 使用本地模型导致只能匹配可行度为1.0的内容的解决方法笔记
PS:哎,兄弟,弄之前,记得先用别的地方验证一下你的onnx模型是否正确
我的情况是
使用
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-vector-store-chroma</artifactId> <version>1.1.7</version> </dependency>
和
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-transformers</artifactId> <version>1.1.2</version> </dependency>
然后当我设置了
spring.ai.model.embedding=transformers
之后(无论我是否指定别的嵌入模型还是使用默认的),我的
VectorStore.similaritySearch 只能匹配可信度为1.0的内容(比如当前我的知识库里有一条"王于兴师,修我戈矛",那么我就只能用王于兴师,修我戈矛去匹配,少一点多一点都匹配不到这条。)
解决办法也很匪夷所思
我们只需要让我们要访问的集合不是先行创建好的,而是由你的项目来创建的即可
比如
直接手动配置
@Configuration @RequiredArgsConstructor public class VectorStoreConfig { @Bean("testChroma") public VectorStore longTermChromaVectorStore(EmbeddingModel embeddingModel, ChromaApi chromaApi) { return ChromaVectorStore.builder(chromaApi, embeddingModel) .tenantName("your_tenant") .databaseName("your_database") .collectionName("testChroma") .initializeSchema(true) .build(); } }然后使用这个自行配置的VectorStore进行操作即可
