LangChain map_reduce处理CSV失效及高成本问题求助
LangChain结合ChatGPT处理全量CSV的问题
问题情况
我尝试用LangChain搭配ChatGPT提取CSV文件中的信息:
- 使用少量数据并采用
stuff模式时,运行完全正常; - 使用完整CSV文件并采用
map_reduce模式时,多数查询(如统计德国车手数量、查找使用14号的车手、出生日期最早的车手等)无法得到正确结果,且调用成本极高(达8美元)。
代码示例
queries = ["Tell me the name of every driver who is German","how many german drivers are?", "which driver uses the number 14?", "which driver has the oldest birthdate?"] import os from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv()) # 读取本地.env文件 from langchain.document_loaders import CSVLoader from langchain.callbacks import get_openai_callback from langchain.chains import RetrievalQA from langchain.llms import OpenAI from langchain.vectorstores import Chroma files = ['drivers.csv','drivers_full.csv'] for file in files: print("=====================================") print(file) print("=====================================") with get_openai_callback() as cb: loader = CSVLoader(file_path=file,encoding='utf-8') docs = loader.load() from langchain.embeddings.openai import OpenAIEmbeddings embeddings = OpenAIEmbeddings() # 创建向量存储用作索引 db = Chroma.from_documents(docs, embeddings) # 将索引暴露为检索器接口 retriever = db.as_retriever(search_type="similarity", search_kwargs={"k":1000, "score_threshold":"0.2"}) for query in queries: qa_stuff = RetrievalQA.from_chain_type( llm=OpenAI(temperature=0,batch_size=20), chain_type="map_reduce", retriever=retriever, verbose=True ) print(query) result = qa_stuff.run(query) print(result) print(cb)
内容的提问来源于stack exchange,提问作者Pablo Castilla
相关产品推荐
相关产品推荐

