像pinecone这样的托管向量数据库可以支持MMR吗

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

为了获得搜索结果的多样性,我想为此使用最大边际相关性。

我想从向量数据库中获取与问题类似的N个文档,然后我想获取与问题类似但与现有文档不同的文档。

获得 MMR 的公式是。

new_similarity_formula = similarity(question) - max_over_existingdocs{similarity(document)}.
information-retrieval faiss pinecone
1个回答
0
投票

如果您使用 LangChain 和 DataStax Astra/Cassandra 作为 Vector DB,您可以执行以下操作:

import cassio
cassio.init(token=os.environ["ASTRA_DB_APPLICATION_TOKEN"], database_id=os.environ["ASTRA_DB_ID"])

from langchain.vectorstores.cassandra import Cassandra
table_name = 'vs_investment_kb'
keyspace = 'demo'

retrieverMMR = CassVectorStore.as_retriever(
    search_type='mmr',
    search_kwargs={
        'k': 4,
        'fetch_k': 10,
    },
    return_source_documents=True
)

# Create a "RetrievalQA" chain
chainMMR = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=retrieverMMR,
    chain_type_kwargs={
        'prompt': PROMPT,
        'document_variable_name': 'summaries'
    }
)
# Run it and print results
responseMMR = chainMMR.run(QUERY)
print(responseMMR)
# Create a "RetrievalQA" chain
chainMMR = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=retrieverMMR,
    chain_type_kwargs={
        'prompt': PROMPT,
        'document_variable_name': 'summaries'
    }
)
# Run it and print results
responseMMR = chainMMR.run(QUERY)
print(responseSim)

Cassio 是一个库,使您能够与 Astra/Cassandra 交互,而无需编写 CQL 命令,它为您进行了抽象。

© www.soinside.com 2019 - 2024. All rights reserved.