RAG使用摘要索引报错
1、base_llm.py代码#!/usr/bin/env python # -*- coding: UTF-8 -*- from dotenv import load_dotenv from langchain_huggingface import HuggingFaceEmbeddings from langchain_openai import ChatOpenAI import os load_dotenv() llm ChatOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY), base_urlos.getenv(DASHSCOPE_BASE_URL), model_nameqwen3.7-plus) # 本地embedding模型地址 # embedding_model_path rD:\LLM\Local_model\BAAI\bge-large-zh-v1___5 embedding_model_path rD:\LLM\Local_model\maidalun\bce-embedding-base_v1 # 初始化嵌入模型用于文本向量化 embeddings_model HuggingFaceEmbeddings( model_nameembedding_model_path )2、摘要索引代码#!/usr/bin/env python # -*- coding: UTF-8 -*- from base_llm import llm, embeddings_model from langchain_core.stores import InMemoryByteStore from langchain_chroma import Chroma from langchain_community.document_loaders import UnstructuredWordDocumentLoader, WebBaseLoader from langchain_text_splitters import RecursiveCharacterTextSplitter # MultiVectorRetriever 多用检索器 from langchain_classic.retrievers import MultiVectorRetriever import uuid from langchain_core.documents import Document from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableMap url https://news.pku.edu.cn/mtbdnew/15ac0b3e79244efa88b03a570cbcbcaa.htm # 初始化文档加载器列表加载多个文本文件 loaders [ UnstructuredWordDocumentLoader(人事管理流程.docx), WebBaseLoader(url) ] docs [] for loader in loaders: docs.extend(loader.load()) # 分割器 text_split RecursiveCharacterTextSplitter(chunk_size1024, chunk_overlap100) docs text_split.split_documents(docs) # 创建摘要生成链 chain ( {doc: lambda x: x.page_content} | ChatPromptTemplate.from_template(总结下面的文档:\n\n{doc}) | llm | StrOutputParser() ) summ chain.batch(docs, {max_concurrency: 5}) # 存摘要之后转换成emb的内容 vector Chroma(collection_namesumm, embedding_functionembeddings_model) # 存原文档 store InMemoryByteStore() id_key doc_id # 创建多用检索器 retriever MultiVectorRetriever( vectorstorevector, byte_storestore, id_keyid_key ) # docs 长度100 生成100个随机数 doc_ids [str(uuid.uuid4()) for i in docs] # 创建摘要文档列表包含元数据 metadata可以用来关联原始文档和摘要文档会自动找到匹配关系 summary_docs [ Document(page_contents, metadata{id_key: doc_ids[i]}) for i, s in enumerate(summ) ] # 把压缩之后的内容添加到向量数据库 retriever.vectorstore.add_documents(summary_docs) # 源文档加载到内容 retriever.docstore.mset(list(zip(doc_ids, docs))) # prompt ChatPromptTemplate.from_template(根据下面的文档回答问题:\n\n{doc}\n\n问题: {question}) # # 生成问题回答链 # chain RunnableMap({ # doc: lambda x: retriever.invoke(x[question]), # question: lambda x: x[question] # }) | prompt | llm | StrOutputParser() # # # # 生成问题回答 # query 病假的请假流程? # answer chain.invoke({question: query}) # print(-------------回答--------------) # print(answer) # retrieved_docs retriever.invoke(query) # print(-------------检索到的文档--------------) # print(retrieved_docs) sub_docs retriever.vectorstore.similarity_search(病假的请假流程?) print(sub_docs) print(-------------检索到的文档--------------) print(sub_docs[0]) summ_id sub_docs[0].metadata[id_key] orig_doc retriever.docstore.mget([summ_id]) print(-------------原始文档--------------) print(orig_doc)3、执行报错内容如下C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Scripts\python.exe C:\Users\lenovo\PycharmProjects\PythonProject\rag\day07\01-摘要索引.py C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_core\utils\pydantic.py:41: UserWarning: Core Pydantic V1 functionality isnt compatible with Python 3.14 or greater. from pydantic.v1 import BaseModel as BaseModelV1 Loading weights: 100%|██████████| 199/199 [00:0000:00, 66810.73it/s] C:\Users\lenovo\PycharmProjects\PythonProject\rag\day07\01-摘要索引.py:8: DeprecationWarning: langchain-community is being sunset and is no longer actively maintained. See https://github.com/langchain-ai/langchain-community/issues/674 for details and migration guidance toward standalone integration packages. from langchain_community.document_loaders import UnstructuredWordDocumentLoader, WebBaseLoader USER_AGENT environment variable not set, consider setting it to identify your requests. [nltk_data] Error loading averaged_perceptron_tagger_eng: [WinError [nltk_data] 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应连接尝试失败。 [nltk_data] Error loading punkt_tab: [WinError 10060] [nltk_data] 由于连接方在一段时间后没有正确答复或连接的主机没有反应连接尝试失败。 Traceback (most recent call last): File C:\Users\lenovo\PycharmProjects\PythonProject\rag\day07\01-摘要索引.py, line 30, in module docs.extend(loader.load()) ~~~~~~~~~~~^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_core\document_loaders\base.py, line 43, in load return list(self.lazy_load()) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_community\document_loaders\unstructured.py, line 107, in lazy_load elements self._get_elements() File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_community\document_loaders\word_document.py, line 139, in _get_elements return partition_docx(filenameself.file_path, **self.unstructured_kwargs) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\common\metadata.py, line 161, in wrapper elements func(*args, **kwargs) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\chunking\dispatch.py, line 74, in wrapper elements func(*args, **kwargs) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\docx.py, line 182, in partition_docx return list(elements) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\docx.py, line 413, in _iter_document_elements yield from self._iter_paragraph_elements(block_item) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\docx.py, line 637, in _iter_paragraph_elements yield from self._classify_paragraph_to_element(item) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\docx.py, line 474, in _classify_paragraph_to_element TextSubCls self._parse_paragraph_text_for_element_type(paragraph) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\docx.py, line 948, in _parse_paragraph_text_for_element_type if is_possible_narrative_text(text): ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\text_type.py, line 74, in is_possible_narrative_text if exceeds_cap_ratio(text, thresholdcap_threshold): ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\text_type.py, line 282, in exceeds_cap_ratio if sentence_count(text, 3) 1: ~~~~~~~~~~~~~~^^^^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\partition\text_type.py, line 219, in sentence_count sentences sent_tokenize(text) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\nlp\tokenize.py, line 55, in sent_tokenize return list(_tokenize_for_cache(text)) ~~~~~~~~~~~~~~~~~~~^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\unstructured\nlp\tokenize.py, line 80, in _tokenize_for_cache return tuple(_sent_tokenize(text)) ~~~~~~~~~~~~~~^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\tokenize\__init__.py, line 119, in sent_tokenize tokenizer _get_punkt_tokenizer(language) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\tokenize\__init__.py, line 105, in _get_punkt_tokenizer return PunktTokenizer(language) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\tokenize\punkt.py, line 1746, in __init__ self.load_lang(lang) ~~~~~~~~~~~~~~^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\tokenize\punkt.py, line 1751, in load_lang lang_dir find(ftokenizers/punkt_tab/{lang}/) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\data.py, line 693, in find return find(modified_name, paths) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\data.py, line 679, in find return ZipFilePathPointer(p, zipentry) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\data.py, line 471, in __init__ zipfile OpenOnDemandZipFile(os.path.abspath(zipfile)) File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\data.py, line 1192, in __init__ ZipFile.__init__(self, filename) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\nltk\pathsec.py, line 265, in __init__ super().__init__(file, *args, **kwargs) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File C:\Users\lenovo\AppData\Local\Programs\Python\Python314\Lib\zipfile\__init__.py, line 1458, in __init__ self._RealGetContents() ~~~~~~~~~~~~~~~~~~~~~^^ File C:\Users\lenovo\AppData\Local\Programs\Python\Python314\Lib\zipfile\__init__.py, line 1525, in _RealGetContents raise BadZipFile(File is not a zip file) zipfile.BadZipFile: File is not a zip file Process finished with exit code 1

相关新闻

如何从零解析信息不全的开源项目:以智能体寻人启事为例

如何从零解析信息不全的开源项目:以智能体寻人启事为例

你打开一个项目页面,标题写着“智能体寻人启事”。第一反应可能是:这又是什么花哨的AI新概念?是让AI去找人,还是用AI生成寻人启事?点进去,发现项目描述几乎是空的,只有一个引人遐想的标题。这种…

2026/10/17 9:29:13 阅读更多 →
后端程序员看过来:3-6个月转型高薪AI应用,收藏这份实战路线图!

后端程序员看过来:3-6个月转型高薪AI应用,收藏这份实战路线图!

本文为传统后端开发者提供了一条从零基础到高薪AI应用的转型路线。文章强调,转型AI应用开发而非技术开发是关键,并提出了“后端AI集成”的复合型路线。核心内容包含避开三大转型误区:死磕底层算法、缺乏实战项目、放弃后端优势。文章详细规划…

2026/10/14 14:32:54 阅读更多 →
链接技术深度解析:从静态动态链接到现代应用实践

链接技术深度解析:从静态动态链接到现代应用实践

1. 链接技术全景解析:从基础原理到现代应用在数字世界的底层架构中,链接技术如同隐形的神经网络,将离散的信息节点编织成可交互的知识图谱。作为从业15年的系统架构师,我见证过无数因链接配置不当导致的系统故障,也亲手…

2026/10/15 12:13:37 阅读更多 →

最新新闻

微波通信入门:频段认知、链路预算与工程实践

微波通信入门:频段认知、链路预算与工程实践

通信观系列写到第三十五篇,今天聊的是微波通信。这个名词做通信相关工作的人都不陌生,但真要回答"微波到底是哪一段频率""为什么传输链路要留几十dB余量""现场装锅的时候哪些坑躲不开",很多刚入门的同学还是会…

2026/10/17 15:19:54 阅读更多 →
AI基础数学PDF:从张量到梯度下降的自学路线图

AI基础数学PDF:从张量到梯度下降的自学路线图

简介:《人工智能的基础数学》是一份系统梳理人工智能数学基础的电子书PDF,面向数据、商业和工程领域读者,尤其适合已有一定编程或数据分析经验、但数学底子薄弱,希望看懂各类算法原理、摆脱只会调用现成模型的从业者与学习者。资源…

2026/10/17 15:19:54 阅读更多 →
Unity体绘制初探:Ray Marching与体数据渲染实战

Unity体绘制初探:Ray Marching与体数据渲染实战

1. 为什么体绘制不是“把模型画得更厚一点”——从一个被反复误解的开场说起很多人第一次在Unity里听说“体绘制”(Volume Rendering),下意识反应是:“哦,就是给模型加个体积感?用个厚涂Shader或者SSS模拟一…

2026/10/17 15:19:54 阅读更多 →
深入解析MMDetection训练入口train.py:从启动到收敛的完整流程

深入解析MMDetection训练入口train.py:从启动到收敛的完整流程

1. 从一次训练中断说起:为什么值得花时间读train.py很多人用 MMDetection 跑通第一个 demo 之后,就再也没打开过tools/train.py。配置文件改一改,命令行敲一下python tools/train.py configs/xxx.py,看到日志开始刷 iteration 就觉…

2026/10/17 15:19:54 阅读更多 →
Unity射击小游戏压缩包:零基础跑通与修改指南

Unity射击小游戏压缩包:零基础跑通与修改指南

简介:这是一份基于Unity3D制作的初级射击游戏完整项目,面向刚接触Unity引擎或希望了解小型游戏开发流程的读者。压缩包共含28个文件,包括可直接运行的exe客户端、dll运行库、config配置文件、assets资源文件与场景数据等,整体体积…

2026/10/17 15:19:54 阅读更多 →
强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

简介:《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著,面向具备一定数学基础、希望从零系统理解强化学习本质的读者。全书以数学推导为主线,结合大量例子循序渐进地展开,涵盖基础概念、状态值与贝尔曼方程、最优状态值…

2026/10/17 15:18:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →