news 2026/6/15 18:01:53

rag学习5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rag学习5

本周基于 LangChain 框架完成了支持多轮对话的 RAG 检索增强问答服务开发,编写RagService核心类,整合通义大模型、DashScope 向量嵌入模型与自研向量库服务,依托配置文件统一管理模型参数,完成各项基础组件的初始化搭建。

本次开发中设计了专属提示词模板,通过ChatPromptTemplate搭配MessagesPlaceholder预留对话历史位置,明确模型应答要求,优先结合检索到的参考资料作答。同时自定义函数完成检索文档内容、元数据的格式化处理,规范数据展示形式。

项目运用 LangChain 各类 Runnable 组件完成链路编排,借助RunnablePassthrough实现数据透传、RunnableLambda完成自定义数据转换,串联文档检索、数据处理、提示词拼接、模型调用、结果解析全流程,并使用StrOutputParser统一输出格式。

本次实践掌握了 LangChain 链式调用逻辑与 RAG 完整业务流程,通过RunnableWithMessageHistory对接历史会话读取接口,实现问答场景的上下文记忆能力。后续将开展功能测试,优化文档格式化逻辑,并进一步拓展服务适配更多业务场景。

from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough, RunnableWithMessageHistory, RunnableLambda from file_history_store import get_history from vectoer_stores import VectorStoreService from langchain_community.embeddings import DashScopeEmbeddings import config_data as config from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_community.chat_models.tongyi import ChatTongyi from langchain_core.documents import Document class RagService: def __init__(self): self.vector_service = VectorStoreService(embedding = DashScopeEmbeddings(model = config.embedding_model_name )) self.prompt_template = ChatPromptTemplate.from_messages( [ ("system","以我提供的已知参考资料为主,简洁和专业的回答用户问题。参考资料{context}"), ("system", "并且我提供的用户的历史对话如下"), MessagesPlaceholder("history"), ("user", "请回答用户提问:{input}") ] ) self.chat_model = ChatTongyi(model = config.chat_model_name) self.chain = self.__get_chain() def __get_chain(self) : retriever = self.vector_service.get_retriever() def format_document(docs: list[Document]) : if not docs : return "没有参考资料" formatted_str = "" for doc in docs : formatted_str += f"文档片段:{doc.page_content}\n文档原数据:{doc.metadata}\n" return formatted_str def format_for_retriever(value): return value["input"] def format_for_prompt_template(value): new_dict = {} new_dict["input"] = value["input"]["input"] new_dict["context"] = value["context"] new_dict["history"] = value["input"]["history"] return new_dict chain = ( {"input":RunnablePassthrough() , "context":RunnableLambda(format_for_retriever)| retriever | format_document} |RunnableLambda(format_for_prompt_template) | self.prompt_template | self.chat_model | StrOutputParser() ) conversation_chain =RunnableWithMessageHistory( chain, get_history, input_messages_key="input", history_messages_key="history", ) return conversation_chain
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 17:55:49

MTK8766 系统签名

系统签字的两种方式 维度 ① OpenSSL + keytool(方法一) ② keytool-importkeypair(方法二) 本质 一系列标准的命令行操作,直接调用OpenSSL和Java的keytool工具。 一个社区开发的封装脚本,自动化执行方法一中的多个命令。 核心步骤 1. pk8 → pem 2. pem + x509.pem → p…

作者头像 李华
网站建设 2026/6/15 17:54:50

BetterNCM安装器:3分钟搞定网易云插件系统终极指南

BetterNCM安装器:3分钟搞定网易云插件系统终极指南 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM安装器是一款专为网易云音乐PC版用户设计的跨平台插件管理工具…

作者头像 李华
网站建设 2026/6/15 17:53:50

收藏!2026年AI“抢人最凶”的3大岗位,普通人也能入局高薪圈!

2026年上半年AI人才市场持续火热,岗位招聘量同比增长87%,平均薪资涨幅达18%。其中,大模型应用工程师、AI内容运营/生成师、提示词工程师这三大岗位缺口超过10万,平均月薪超3万。这些岗位更注重应用而非研究,技术门槛在…

作者头像 李华
网站建设 2026/6/15 17:52:52

构建个人数字图书馆:开源小说下载器的技术解析与实践指南

构建个人数字图书馆:开源小说下载器的技术解析与实践指南 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经遇到过这样的情况:收藏多年的小说突然从网…

作者头像 李华
网站建设 2026/6/15 17:50:57

深入解析MPC866 PowerQUICC:通信处理器架构与硬件加速原理

1. MPC866 PowerQUICC:通信与嵌入式设计的基石在路由器、交换机、工业控制器的核心板上,你总能找到一些集成了CPU和丰富通信外设的单芯片方案。对于经历过那个时代的嵌入式开发者来说,飞思卡尔(现为NXP)的PowerQUICC系…

作者头像 李华