如何通过LangChain从Azure AI Search索引分块中获取文档ID
解决LangChain AzureSearch无法获取文档ID的问题
问题根源:LangChain的
AzureSearch类默认不会将Azure AI Search索引中的文档ID映射到返回的Document对象的id属性,需要手动配置字段映射。解决方案步骤:
- 初始化AzureSearch时指定ID字段
在创建AzureSearch实例时,添加id_field参数,值为Azure AI Search索引中存储自动生成ID的字段名(默认自动生成的ID字段名为id)。代码示例:from langchain_community.vectorstores import AzureSearch from langchain_openai import OpenAIEmbeddings embeddings = OpenAIEmbeddings(model="text-embedding-ada-002") vector_store = AzureSearch( azure_search_endpoint="你的Azure Search端点", azure_search_key="你的Azure Search密钥", index_name="你的索引名称", embedding_function=embeddings.embed_query, id_field="id" # 关键配置:指定ID字段 ) - 调用搜索方法获取带ID的文档
之后调用search或similarity_search等方法,返回的Document对象的id属性就会对应Azure AI Search中的文档ID:results = vector_store.search("你的查询内容", k=5) for doc in results: print(f"文档ID: {doc.id}, 内容摘要: {doc.page_content[:100]}...")
- 初始化AzureSearch时指定ID字段
注意:如果你的索引使用了自定义的ID字段名,只需将
id_field的值替换为对应的字段名称即可。
内容的提问来源于stack exchange,提问作者Patrick Schwarz
相关产品推荐
相关产品推荐

