使用LangChain/OpenAI处理PDF嵌入时遇AttributeError问题求助
问题分析与解决
报错原因
你执行store.add_documents(embeddings)时,传入的是已生成的嵌入向量列表,但add_documents方法要求传入的是LangChain的Document对象列表(这类对象带有page_content属性),因此触发了AttributeError。
代码冗余问题
你的代码存在不必要的重复操作:
- 既调用
load_and_split()获取分割后的Document列表pages,又调用load()重新加载文档,属于重复操作。 - 手动调用
embedder.embed_documents(texts)生成嵌入完全多余,FAISS.from_documents会自动使用传入的Embeddings模型处理文档并生成嵌入。
修正后的代码
from langchain.document_loaders import PyPDFLoader from langchain.vectorstores import FAISS from langchain.embeddings.openai import OpenAIEmbeddings # 加载并分割PDF为带page_content的Document对象列表 loader = PyPDFLoader("FILENAME.pdf") pages = loader.load_and_split() # 直接创建FAISS向量库,内部自动完成嵌入生成 store = FAISS.from_documents(pages, OpenAIEmbeddings()) # 若后续需要添加新文档,传入新的Document对象列表即可 # new_docs = other_loader.load_and_split() # store.add_documents(new_docs)
关键说明
FAISS.from_documents会自动处理文档的嵌入生成与存储,无需手动调用embed_documents。add_documents方法仅用于添加新的Document对象,不能直接传入已生成的向量。
内容的提问来源于stack exchange,提问作者Encomium
相关产品推荐
相关产品推荐

