网站建设与网站设计哪个好学相应式 wordpress

张小明 2026/1/9 19:40:34
网站建设与网站设计哪个好学,相应式 wordpress,精品下载,有什么类型的网站一、任务背景 在信息检索与智能问答场景中#xff0c;大语言模型#xff08;LLM#xff09;常面临“知识时效性不足”“无法结合私有数据”等问题。检索增强生成#xff08;RAG#xff09;技术通过将“向量数据库检索私有数据”与“LLM生成回答”相结合#xff0c;既能利…一、任务背景在信息检索与智能问答场景中大语言模型LLM常面临“知识时效性不足”“无法结合私有数据”等问题。检索增强生成RAG技术通过将“向量数据库检索私有数据”与“LLM生成回答”相结合既能利用LLM的语言理解能力又能让回答基于指定的私有数据如本地文档有效解决上述问题。本代码基于LangChain框架整合智谱GLM大模型、智谱免费Embedding模型与LanceDB向量数据库实现了一个本地RAG问答系统从本地文本文件中提取信息通过向量数据库检索与用户问题相关的内容最终由GLM大模型基于检索结果生成精准回答。常见向量数据库介绍Chroma特点开源的向量数据库支持本地和云环境部署优势灵活的部署选项使其既可以在本地运行也可以在云端运行适用场景适用于那些希望保持数据本地化但又不想牺牲云灵活性的项目FAISS特点Facebook 开发的一个高效相似度搜索库优势特别适合处理大规模的数据集适用场景当处理大量文本数据时FAISS 是一个不错的选择Qdrant特点开源的向量数据库支持云托管优势提供了便捷的云托管服务简化了运维工作适用场景对于那些希望专注于核心业务逻辑而不是基础设施管理的开发者来说非常适合Pinecone特点提供托管服务的向量数据库优势高性能且易于使用无需担心后端的维护工作适用场景适用于那些需要快速上线且不想花费太多时间在数据库配置上的项目Milvus特点开源的向量数据库支持多种向量类型优势除了文本向量外还可以存储其他类型的向量数据适用场景当项目涉及到多种类型的向量数据时Milvus 是一个很好的选择LanceDB特点开源的知识图谱和向量数据库优势支持多种数据类型可以构建复杂的关系图谱适用场景适用于需要存储和检索具有复杂关系的数据集二、核心任务逻辑数据预处理读取本地文本文件按指定规则分割为小块文本chunk确保文本长度适配Embedding模型和LLM的输入限制向量存储使用智谱免费Embedding模型将分割后的文本块转换为向量存储到LanceDB本地向量数据库中建立文本与向量的映射检索匹配用户输入问题后将问题转换为向量在LanceDB中检索与该向量最相似的文本块即相关上下文生成回答将检索到的相关上下文与用户问题一起传入GLM大模型由模型基于上下文信息生成回答确保回答仅依赖检索到的私有数据。三、RAG执行流程总览graph TD A[本地文本文件 test.txt] -- B[TextLoader读取文件] B -- C[RecursiveCharacterTextSplitter分割文本块] C -- D[智谱Embedding-3模型生成文本向量] D -- E[LanceDB向量数据库存储向量文本] F[用户输入问题] -- G[Embedding模型生成问题向量] G -- H[LanceDB检索相似文本块上下文] H -- I[将上下文问题传入GLM-4模型] I -- J[生成并输出回答]四、代码分块详解1. 依赖库导入代码块importosimportlancedbfromlangchain_community.document_loadersimportTextLoaderfromlangchain_community.vectorstoresimportLanceDBfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.runnablesimportRunnableParallel,RunnablePassthroughfromlangchain_openaiimportChatOpenAIfromlangchain_text_splittersimportRecursiveCharacterTextSplitter# 关键导入智谱GLM的Embedding类无需额外安装依赖fromlangchain_community.embeddingsimportZhipuAIEmbeddings功能说明基础库os用于环境变量读取和路径处理lancedb用于连接LanceDB向量数据库LangChain核心组件文档加载TextLoader用于读取本地文本文件向量存储LanceDB用于将文本向量与LanceDB集成提示词模板ChatPromptTemplate定义LLM的输入格式流水线组件RunnableParallel并行处理、RunnablePassthrough透传参数用于构建检索-生成流水线输出解析StrOutputParser将LLM的输出转换为字符串文本分割RecursiveCharacterTextSplitter用于分割长文本智谱相关ZhipuAIEmbeddings智谱Embedding模型、ChatOpenAI适配智谱GLM大模型的调用类。2. 本地文本读取与分割代码块# 读取本地文本文件loaderTextLoader(rF:\python测试\智谱-langchain\测试数据\test.txt,encodingutf8)documentsloader.load()# 文本分割配置text_splitterRecursiveCharacterTextSplitter(chunk_size200,# 每个文本块的最大长度字符数chunk_overlap100,# 相邻文本块的重叠长度确保上下文连贯性length_functionlen,# 长度计算方式默认按字符数is_separator_regexFalse,# 不使用正则表达式解析分隔符separators[# 文本分割的分隔符按优先级排序\n\n,\n,.,?,!,。,,,,,, ])# 执行文本分割并输出分割后的文本块数量docstext_splitter.split_documents(documents)print(,len(docs))功能说明文本读取通过TextLoader指定本地文本文件路径和编码utf8读取文件内容为LangChain的Document对象文本分割核心逻辑chunk_size200限制每个文本块最大200个字符避免文本过长超出Embedding模型和LLM的输入限制chunk_overlap100相邻文本块重叠100个字符防止因分割导致上下文断裂如一句话被拆分到两个块中separators按“段落分隔符→换行→标点符号”的优先级分割确保分割后的文本块语义完整输出分割后的文本块数量用于验证分割效果如输入文本1000字符约生成6-7个文本块。3. 智谱Embedding模型初始化代码块# 从环境变量读取智谱API密钥推荐方式避免硬编码api_keyos.getenv(Zhipu_API_KEY)# 初始化智谱免费Embedding模型embeddingsZhipuAIEmbeddings(modelembedding-3,# 智谱免费Embedding模型核心参数无需付费api_keyapi_key,# 智谱API密钥与GLM大模型通用base_urlhttps://open.bigmodel.cn/api/paas/v4/# 智谱API请求地址)功能说明API密钥读取通过os.getenv从系统环境变量中读取Zhipu_API_KEY避免将密钥硬编码在代码中提升安全性Embedding模型核心参数modelembedding-3智谱提供的免费Embedding模型支持文本向量化适合中小型RAG场景base_url智谱API的固定请求地址确保能正常调用Embedding服务作用将文本块转换为计算机可理解的向量Embedding用于后续向量数据库的检索匹配。4. LanceDB向量数据库连接与向量存储代码块# 连接本地LanceDB向量数据库存储路径为当前工作目录下的lanceDB文件夹connectlancedb.connect(os.path.join(os.getcwd(),lanceDB))# 将文本块转换为向量并存储到LanceDB中vectorStoreLanceDB.from_documents(docs,# 分割后的文本块列表embeddings,# 初始化后的智谱Embedding模型connectionconnect,# LanceDB连接对象table_namemy_vectors# 向量表名自定义可修改)功能说明向量数据库连接lancedb.connect指定本地存储路径当前工作目录下的lanceDB文件夹LanceDB会自动创建该目录并初始化数据库向量存储核心逻辑from_documentsLangChain的封装方法自动遍历所有文本块调用Embedding模型生成向量同时存储“向量文本块内容元数据”到LanceDB的my_vectors表中优势LanceDB是轻量级本地向量数据库无需额外部署服务适合快速验证RAG原型。5. 检索器初始化与提示词模板定义代码块# 初始化向量数据库检索器用于后续检索相关文本块retrievervectorStore.as_retriever()# 定义LLM的输入提示词模板templateAnswer the question based only on the following context: {context} If the context has no relevant information, reply 未查询到相关信息. Question: {question} promptChatPromptTemplate.from_template(template)功能说明检索器初始化vectorStore.as_retriever()将LanceDB向量数据库包装为LangChain的Retriever对象后续可直接通过该对象检索与问题相关的文本块提示词模板核心作用限制LLM仅基于检索到的context上下文生成回答避免模型编造信息幻觉定义兜底逻辑若上下文无相关信息直接回复“未查询到相关信息”提升回答的规范性。6. GLM大模型初始化与流水线构建代码块# 初始化智谱GLM大模型modelChatOpenAI(modelglm-4-0520,# GLM-4模型版本可替换为glm-3-turbo等api_keyapi_key,# 复用智谱API密钥base_urlhttps://open.bigmodel.cn/api/paas/v4/# 智谱API请求地址)# 初始化输出解析器将LLM的输出转换为字符串output_parserStrOutputParser()# 构建RAG流水线检索上下文 → 拼接提示词 → LLM生成 → 解析输出start_retrieverRunnableParallel({context:retriever,question:RunnablePassthrough()})chainstart_retriever|prompt|model|output_parser功能说明GLM大模型初始化通过ChatOpenAI类适配智谱GLM模型LangChain兼容OpenAI API格式智谱GLM支持该格式指定模型版本、API密钥和请求地址流水线核心逻辑RunnableParallel并行处理两个任务①调用retriever检索上下文②透传用户输入的question问题最终输出一个包含context和question的字典流水线运算符|将多个组件按顺序串联数据从左到右传递start_retriever输出{context: 检索到的文本块, question: 用户问题}prompt将上述字典代入模板生成LLM的输入文本modelGLM模型基于输入文本生成回答output_parser将模型输出的结构化数据转换为字符串。7. 执行问答与输出结果代码块# 用户查询问题query今年长三角铁路春游运输共经历多少天# 执行RAG流水线生成回答reschain.invoke(query)# 输出结果print(res)功能说明chain.invoke(query)触发RAG流水线执行传入用户问题query自动完成“检索→提示词拼接→生成→解析”全流程输出打印LLM生成的最终回答回答仅基于本地文本文件中的信息。五、代码逻辑文字流程总结读取本地test.txt文件的文本内容按“最大200字符、重叠100字符”的规则用标点/换行符分割文本为多个语义完整的小块调用智谱免费Embedding-3模型将所有文本块转换为向量把“向量文本块”存储到本地LanceDB向量数据库的my_vectors表中用户输入问题后将问题转换为向量在LanceDB中检索最相似的文本块上下文把“上下文问题”按指定模板拼接为LLM输入调用GLM-4模型基于输入生成回答若上下文无相关信息则回复兜底内容输出最终的字符串格式回答。六、完整代码importosimportlancedbfromlangchain_community.document_loadersimportTextLoaderfromlangchain_community.vectorstoresimportLanceDBfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.runnablesimportRunnableParallel,RunnablePassthroughfromlangchain_openaiimportChatOpenAIfromlangchain_text_splittersimportRecursiveCharacterTextSplitter# 关键导入智谱GLM的Embedding类无需额外安装依赖fromlangchain_community.embeddingsimportZhipuAIEmbeddings# 1. 读取本地文本文件loaderTextLoader(rF:\python测试\智谱-langchain\测试数据\test.txt,encodingutf8)documentsloader.load()# 2. 文本分割配置text_splitterRecursiveCharacterTextSplitter(chunk_size200,chunk_overlap100,length_functionlen,is_separator_regexFalse,separators[\n\n,\n,.,?,!,。,,,,,, ])# 3. 读取智谱API密钥并执行文本分割api_keyos.getenv(Zhipu_API_KEY)docstext_splitter.split_documents(documents)print( 分割后的文本块数量,len(docs))# 4. 初始化智谱免费Embedding模型embeddingsZhipuAIEmbeddings(modelembedding-3,# 智谱免费Embedding模型核心参数api_keyapi_key,# 复用GLM大模型的API Keybase_urlhttps://open.bigmodel.cn/api/paas/v4/# 复用智谱API地址)# 5. 连接LanceDB并存储向量connectlancedb.connect(os.path.join(os.getcwd(),lanceDB))# 本地目录存储向量vectorStoreLanceDB.from_documents(docs,embeddings,connectionconnect,table_namemy_vectors)# 6. 定义用户查询与检索器query今年长三角铁路春游运输共经历多少天retrievervectorStore.as_retriever()# 7. 定义提示词模板templateAnswer the question based only on the following context: {context} If the context has no relevant information, reply 未查询到相关信息. Question: {question} promptChatPromptTemplate.from_template(template)# 8. 初始化GLM大模型modelChatOpenAI(modelglm-4-0520,api_keyapi_key,base_urlhttps://open.bigmodel.cn/api/paas/v4/)# 9. 构建并执行RAG流水线output_parserStrOutputParser()start_retrieverRunnableParallel({context:retriever,question:RunnablePassthrough()})chainstart_retriever|prompt|model|output_parser reschain.invoke(query)print(\n 回答结果)print(res)七、可能的输出结果情况1本地文本包含相关信息如test.txt中存在“今年长三角铁路春游运输自3月10日启动至4月10日结束共计32天” 分割后的文本块数量 8 回答结果 今年长三角铁路春游运输共经历32天。情况2本地文本无相关信息 分割后的文本块数量 8 回答结果 未查询到相关信息情况3API密钥错误或网络异常# 典型错误输出示例 AuthenticationError: Invalid API key. Please check your API key and try again.解决方案检查环境变量Zhipu_API_KEY是否正确配置确保网络能访问智谱API地址
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

张家港网站推广优化市场营销证书含金量

目录 前言 一、如何获取 VFX Graph 示例内容? 二、Output Event Handlers:让特效与游戏逻辑深度交互 2.1 什么是 Output Event? 2.2 内置事件处理器脚本 三、深入使用 VFXOutputEventPrefabSpawn 3.1 工作流程 3.2 属性绑定处理器示例…

张小明 2026/1/9 17:28:22 网站建设

自贡公司做网站怎样在网站上做友情链接

Eclipse 中特性、更新站点、应用程序和产品的创建与管理 在 Eclipse 开发环境中,特性(Feature)、更新站点(Update Site)等概念是非常重要的,它们有助于我们更好地组织和管理插件,实现功能的模块化和可更新性。下面将详细介绍如何在 Eclipse 中创建、导出、安装特性,以…

张小明 2026/1/5 19:02:53 网站建设

做移门配件的网站自己做的网站怎么放视频

为什么需要分库分表 为什么要分库 分库主要解决的是并发量过⼤的问题,因为并发量⼀旦上升了,那么数据库就可能成为系统的瓶颈,因为数据库的连接数量是有上限的,虽然你可以进⾏调整,但并不是⽆限调整的。所以&#xff0…

张小明 2025/12/31 17:19:29 网站建设

高县网站建设网站建设皿金手指排名

本文系统介绍大模型技术的基础概念、优势与应用,提供从零开始的学习路径。涵盖Transformer、GPT、LLaMA等核心模型,以及分布式训练、有监督微调等实践技能。推荐学习资源与实战项目,帮助程序员掌握大模型开发能力,提升就业竞争力。…

张小明 2025/12/29 2:33:58 网站建设

民非单位年检那个网站做定制网络设备的后期维护缺点

最近在闲鱼上刷到不少卖家在挂“大模型备案材料模板”“拦截关键词库”“安全测试题包”“完整备案资料一套几百块”,价格从几十到几千不等,标题还写得天花乱坠:“最新版网信办要求”“直接抄就能过”“已帮助多家企业通过”。不少刚入行做AI…

张小明 2025/12/29 2:34:02 网站建设

可视化编辑建站平台弄个做网站公司

序列对齐序列对齐问题是一个经常用到的问题。大部分的拼写工具都会进行拼写校验来纠正拼写错误,例如图中工具将错误单词(呈现为 “O-CURRANCE”)与正确单词 “OCCURRENCE” 进行对齐,其中竖线 “|” 代表对应位置的字符完全匹配。…

张小明 2025/12/29 2:34:04 网站建设