问题验证
- 我已经在文档和discord上寻找答案。
问题
这是我的代码
vector_store = MongoDBAtlasVectorSearch(client, db_name=db_name, collection_name=collection_name, index_name="autoprod_index", embeddings = embed_model)
for url in urls:
company_name = extract_company_name(url)
#AHL_loader = AsyncHtmlLoader(url)
#AHL_docs = AHL_loader.load()
url = os.path.join('/content/html_files',url)
loader = UnstructuredHTMLLoader(url)
data = loader.load()
#AHL_docs_HTML2TEXT = htmlTotext.transform_documents(AHL_docs)
doc = Document(text = data[0].page_content)
#doc = Document(text=AHL_docs_HTML2TEXT[0].page_content)
parser = HierarchicalNodeParser.from_defaults(chunk_sizes=[2048, 512, 128])
nodes = parser.get_nodes_from_documents([doc])
for node in nodes:
node_embedding = embed_model.get_text_embedding(
node.get_content(metadata_mode=MetadataMode.ALL))
node.embedding = node_embedding
node.metadata['company_name'] = company_name
node.metadata['url'] = url
vector_store.add(nodes)
index = VectorStoreIndex.from_vector_store(vector_store)#, storage_context = storage_context)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
postproc = None
reranker = SentenceTransformerRerank(top_n=3)
base_retriever = index.as_retriever(similarity_top_k = 3, filters = MetadataFilters(
filters=[
ExactMatchFilter(key="metadata.company_name", value="grail"),
ExactMatchFilter(key="metadata.url", value="/content/html_files/https.grail.com.html")
]))
retriever = AutoMergingRetriever(base_retriever, storage_context=storage_context, verbose=True)
#response_synthesizer = get_response_synthesizer(response_mode='tree_summarize')
node_postprocessors = [postproc, reranker]
node_postprocessors = [processor for processor in node_postprocessors if processor is not None]
query_engine = RetrieverQueryEngine(retriever, node_postprocessors=node_postprocessors)
summary_whole = query_engine.query("Who is the CEO of grail? Answer if you are 100 % sure.")
print(summary_whole)
它给出了这个错误ValueError: doc_id 7109edf3-cbda-4c55-9c34-a5a18c14aea1 not found.
其中doc id在实际的mongodb集合中存在
5条答案
按热度按时间hvvq6cgz1#
嘿,GildeshAbhay!😄很高兴再次在这里与你相遇。我现在正在研究你的问题,并将在不久后给你一些见解!
yc0p9oo02#
b4qexyjb3#
我也有同样的问题。
isr3a4wc4#
你遇到的问题,即抛出
ValueError: doc_id not found
的原因,可能是由于在你的 MongoDBAtlasVectorSearch 类中处理文档 ID(doc_id
)的方式存在不一致性。具体来说,当添加或删除文档时,这些操作之间的doc_id
必须完全匹配。确保用于将文档添加到 MongoDB 集合的doc_id
与尝试删除或查询这些文档时使用的doc_id
相匹配。这需要仔细审查你的代码中如何分配和管理doc_id
值,特别是与 MongoDBAtlasVectorSearch 类的操作有关。如果
doc_id
得到正确管理,问题仍然存在,那么检查特定的 MongoDB 查询可能是有益的,并确保它们与你的 MongoDB 集合中的预期文档结构和 ID 管理相一致。这可能包括调试 MongoDBAtlasVectorSearch 类的方法,以验证所有相关查询中使用的正确doc_id
值。鉴于问题的复杂性和可能需要对你的 MongoDBAtlasVectorSearch 类及其与 MongoDB 的交互进行更详细的审查,咨询那些直接参与你正在使用的具体工具或库的开发或维护的人也可能是有帮助的。
详细信息
来源
关于 Dosu
这个响应旨在提供帮助并节省时间。它不是 精确的解决方案,而是你自己研究的一个起点。
请帮助我变得更有用!如果你觉得这个回答有帮助,请留下一个赞👍;如果无关紧要,请留下一个踩👎。
daolsyd05#
我已经解决了这个问题,具体如下:
使用MongoDB:
MongoDBAtlasVectorSearch
的向量存储。MongoDocumentStore
的文档存储。**注意:**当使用带有搜索索引Atlas的MongoDB时,您需要手动使用doc向量创建索引向量。对于Cluster M10,您可以简单地编写这个过程。
之后: