LangChain load_summarize_chain跨主题内容混入问题求助
解决LangChain load_summarize_chain混入其他主题内容的方案
确保文档加载完全隔离
每次处理目标文件夹时,重新加载该文件夹内的文档,不复用之前的文档集合。使用DirectoryLoader时明确指定当前文件夹路径,避免保留全局文档列表变量,每次处理前重新初始化加载器并加载文档。
示例代码:from langchain.document_loaders import DirectoryLoader # 每次处理新文件夹时重新执行以下代码 loader = DirectoryLoader("./path/to/target_folder") target_docs = loader.load()加载后可通过打印
len(target_docs)或遍历文档内容,确认仅包含目标文件夹的文件。每次任务重新创建总结链
不要复用同一个load_summarize_chain实例,每次处理新文件夹时重新生成链对象,避免链内部残留之前任务的状态信息。
示例代码:from langchain.chains.summarize import load_summarize_chain from langchain.llms import OpenAI # 每次处理新任务时重新初始化链 llm = OpenAI(model_name="gpt-3.5-turbo-instruct") chain = load_summarize_chain(llm, chain_type="map_reduce") # 仅传入当前文件夹的文档进行总结 summary = chain.run(target_docs)严格隔离LLM输入上下文
检查map阶段的prompt模板,确保仅引用当前处理的文档片段,不携带任何之前任务的文本内容。由于gpt-3.5-turbo-instruct是文本补全模型,无需会话管理,但要保证每次传入链的输入仅包含当前文件夹文档的分块数据。过滤非目标文件夹文档
加载文档后添加路径验证逻辑,排除不属于目标文件夹的文件(如误加载的上级目录文件、符号链接等)。
示例代码:target_folder_path = "./path/to/target_folder" # 过滤出路径包含目标文件夹的文档 filtered_docs = [doc for doc in target_docs if target_folder_path in doc.metadata["source"]]
内容的提问来源于stack exchange,提问作者abdz_128
相关产品推荐
相关产品推荐

