使用余弦相似度搜索现有 ChromaDB 数据库

问题描述 投票:0回答:1

我有一个预先存在的数据库,其中存储了大约 15 个 PDF。我希望能够搜索数据库,以便使用余弦相似度在给定特定阈值的情况下获得 X 个最相关的结果。

目前,我已经使用以下代码定义了一个集合:

chroma_client = chromadb.PersistentClient(path="TEST_EMBEDDINGS/CHUNK_EMBEDDINGS")
collection = chroma_client.get_or_create_collection(name="CHUNK_EMBEDDINGS")

我做了一些研究,在我看来,虽然 ChromaDB 没有相似性搜索,但 FAISS 有。然而,现有的在线解决方案描述了这样做:

from langchain.vectorstores import Chroma
db = Chroma.from_documents(texts, embeddings)
docs_score = db.similarity_search_with_score(query=query, distance_metric="cos", k = 6)

我不确定如何集成此代码或者是否有更好的解决方案。

python cosine-similarity sentence-similarity chromadb vector-database
1个回答
0
投票

ChromaDB 确实有相似性搜索。默认值为 L2,但您可以按照此处记录的方式更改它

collection = client.create_collection(
    name="collection_name",
    metadata={"hnsw:space": "cosine"} # l2 is the default
)
© www.soinside.com 2019 - 2024. All rights reserved.