我正在尝试使用Langchain和OpenAI API对我的CSV文件进行一些查询。我能够运行这段代码,但我不确定为什么结果仅限于CSV中500行中的4条记录。
我在从csv_loader加载后尝试打印,显示了所有记录,所以我在嵌入/向量处理上可能做错了什么。谁能建议我可以尝试什么?
csv_loader = CSVLoader(csv_file_path) data = csv_loader.load() splitter = CharacterTextSplitter(separator = "\n", chunk_size=500, chunk_overlap=0, length_function=len) documents = splitter.split_documents(data) embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(documents, embeddings) vectorstore.save_local("faiss_index_constitution") persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings, allow_dangerous_deserialization=True) query = "自2024年3月1日以来交易金额的总和是多少?" retriever = persisted_vectorstore.as_retriever() chain = RetrievalQA.from_llm(llm=model, retriever=retriever, verbose=True) chain_input = {"query": query, "context": None} result = chain(chain_input) return result
回答:
检索器默认返回的文档数量是4
(源代码)。您可以通过在search_kwargs
中指定k
的值来设定要检索的文档数量。
retriever = persisted_vectorstore.as_retriever( search_kwargs={"k": 50})
参考资料