最大边际相关性#
- langchain_redis.vectorstores.maximal_marginal_relevance(query_embedding: ndarray, embedding_list: List[ndarray], lambda_mult: float = 0.5, k: int = 4) List[int] [source]#
计算最大边际相关性。
最大边际相关性优化了与查询的相似性和所选文档之间的多样性。
- Parameters:
query_embedding (ndarray) – 查询文本的嵌入。
embedding_list (List[ndarray]) – 从中选择的嵌入列表。
lambda_mult (float) – 介于0和1之间的数字,用于确定结果之间的多样性程度,其中0对应于最大多样性,1对应于最小多样性。默认值为0.5。
k (int) – 返回的结果数量。默认为4。
- Returns:
所选嵌入的索引列表。
- Return type:
列表[int]
示例
from langchain_redis import RedisVectorStore from langchain_openai import OpenAIEmbeddings import numpy as np embeddings = OpenAIEmbeddings() vector_store = RedisVectorStore( index_name="langchain-demo", embedding=embeddings, redis_url="redis://localhost:6379", ) query = "What is the capital of France?" query_embedding = embeddings.embed_query(query) # Assuming you have a list of document embeddings doc_embeddings = [embeddings.embed_query(doc) for doc in documents] selected_indices = vector_store.maximal_marginal_relevance( query_embedding=np.array(query_embedding), embedding_list=[np.array(emb) for emb in doc_embeddings], lambda_mult=0.5, k=2 ) for idx in selected_indices: print(f"Selected document: {documents[idx]}")