当前位置: 首页 > wzjs >正文

实现网站"今天访问量昨天访问量"统计插件 for dedecms线下推广方法有哪些

实现网站"今天访问量昨天访问量"统计插件 for dedecms,线下推广方法有哪些,企业网站开发实训心得,四川省建设招标网站首页基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战 在本文中,我将详细介绍如何使用LangChain框架构建一个完整的RAG(检索增强生成)问答系统。通过向量检索获取相关上下文,并结合大语言模型,我们能够…

基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战

在本文中,我将详细介绍如何使用LangChain框架构建一个完整的RAG(检索增强生成)问答系统。通过向量检索获取相关上下文,并结合大语言模型,我们能够构建出一个能够基于特定知识库回答问题的智能系统。

1. 基础设置与向量检索准备

首先,我们需要导入必要的库并设置向量存储访问:

import os
from dotenv import load_dotenv
from langchain_core.output_parsers import StrOutputParser
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_redis import RedisConfig, RedisVectorStore# 加载环境变量
load_dotenv()# 定义查询问题
query = "我的生日是几月几日?"# 初始化阿里云百炼平台的向量模型
embedding = DashScopeEmbeddings(model="text-embedding-v3", dashscope_api_key=os.getenv("ALY_EMBADING_KEY"))
redis_url = "redis://localhost:6379"  # Redis数据库的连接地址# 配置Redis向量存储
config = RedisConfig(index_name="my_index2",  # 索引名称redis_url=redis_url,  # Redis数据库的连接地址
)# 创建向量存储实例和检索器
vector_store = RedisVectorStore(embedding, config=config)
retriever = vector_store.as_retriever()

这部分代码完成了以下工作:

  • 加载环境变量以安全地使用API密钥
  • 初始化阿里云文本嵌入模型
  • 配置Redis向量数据库连接
  • 创建检索器(retriever),用于执行向量相似度检索

2. 执行向量检索

接下来,我们使用检索器从向量库中获取与查询相关的文本段落:

# 执行检索,获取相关文本段落
retriever_segments = retriever.invoke(query, k=5)
print(retriever_segments)# 将检索结果整合
text = []
for segment in retriever_segments:text.append(segment.page_content)

在这段代码中:

  • retriever.invoke(query, k=5) 检索与查询语义最相关的5个文本段落
  • 我们将检索到的每个段落的文本内容提取并整合到一个列表中

3. 构建Prompt模板

我们需要设计一个提示模板,将检索到的相关信息和用户问题一起传递给大语言模型:

from langchain_core.prompts import ChatPromptTemplateprompt_template = ChatPromptTemplate.from_messages([("system", """你是一个问答机器人,你的任务是根据下述给定的已知信息回答用户的问题已知信息:{context}用户问题:{query}如果已知问题不包含用户问题的答案,或者已知信息不足以回答用户的问题,请回答"抱歉,我无法回答这个问题。"请不要输出已知信息中不包含的信息或者答案。用中文回答用户问题"""),]
)# 格式化prompt
prompt = prompt_template.invoke({"context": text, "query": query})
print(prompt.to_messages()[0].content)

这个提示模板:

  • 明确定义了AI助手的角色和任务
  • 设置了两个变量:{context}用于传入检索结果,{query}用于传入用户问题
  • 提供了清晰的回答指令,包括当信息不足时如何响应

4. 调用大语言模型获取回答

现在,我们使用LLM来生成基于上下文的回答:

from langchain_openai import ChatOpenAI# 结果解析器,直接获取纯文本回复
parser = StrOutputParser()# 初始化LLM模型接口
model = ChatOpenAI(base_url="https://openrouter.ai/api/v1", api_key=os.getenv("OPENAI_KEY"),model="qwen/qwq-32b:free")# 调用模型获取回答
result = model.invoke(prompt)
print(result)

这里我们:

  • 使用了OpenRouter平台上的通义千问模型
  • 通过model.invoke(prompt)将格式化后的提示发送给模型
  • 获取模型的文本响应

5. 构建完整的RAG链

最后,我们将把所有步骤整合成一个完整的LangChain处理链,实现端到端的RAG问答:

from operator import itemgetter# 辅助函数:收集文档内容
def collect_documents(segments):text = []for segment in segments:text.append(segment.page_content)return text# 构建完整的处理链
chain = ({"context": itemgetter("query") | retriever | collect_documents,"query": itemgetter("query")
} | prompt_template | model | parser)# 设置新的查询并执行链
query = "你能帮助史可轩处理日常事务吗"
response = chain.invoke({"query": query})
print(response)

这个链式处理流程:

  1. 接收用户查询
  2. 执行向量检索获取相关上下文
  3. 将上下文和查询组合到提示模板中
  4. 调用LLM生成回答
  5. 解析并返回最终的文本响应

详细解析链式处理

让我们解析一下这个链式处理的构建方式:

chain = ({"context": itemgetter("query") | retriever | collect_documents,"query": itemgetter("query")
} | prompt_template | model | parser)

这个链式结构使用了LangChain的管道操作符 |,实现了以下流程:

  1. itemgetter("query") 从输入字典中提取查询文本
  2. 将查询传递给 retriever 执行向量检索
  3. collect_documents 函数处理检索结果,提取文本内容
  4. 将处理后的上下文和原始查询分别作为 contextquery 传递给提示模板
  5. 提示模板格式化后的内容发送给LLM模型处理
  6. 最后通过 parser 解析LLM的响应,获取纯文本结果

总结

本文介绍了如何使用LangChain框架构建一个完整的RAG问答系统,主要包含以下步骤:

  1. 向量检索:从Redis向量数据库中检索与用户问题语义相似的文本段落
  2. 提示工程:设计合适的提示模板,将检索结果作为上下文与用户问题一起发送给模型
  3. 模型调用:利用LangChain的接口调用大语言模型生成答案
  4. 链式处理:使用LangChain的管道操作将各个组件整合成一个端到端的工作流

这种RAG架构具有很好的可解释性和可靠性,能够基于特定的知识库回答问题,避免了大语言模型"幻觉"问题,特别适合构建企业级知识问答系统、客服助手等应用。

通过向量检索提供相关上下文,我们可以让大语言模型更准确地回答特定领域的问题,同时也能降低知识更新的成本(只需更新向量库而无需重新训练模型)。这种方案在实际应用中具有很高的灵活性和可扩展性。

http://www.dtcms.com/wzjs/62015.html

相关文章:

  • 怎样增加网站的权重百度一下官方网页
  • 易语言做网站源码站长网站seo查询
  • 广元网站建设价格汕头搜索引擎优化服务
  • 怎样创建网站直播接口抄一则新闻四年级
  • 免费网站建设新技术郑州优化公司有哪些
  • 最低网网站多少钱seo网页优化培训
  • 4a级旅游网站建设的要求seo标题优化导师咨询
  • 网站内链建设怎么快速推广app
  • 微信推送怎么做购物网站免费网站建站2773
  • 专业直播网站开发2022年最好用的搜索引擎
  • 网站做适配多少钱思亿欧seo靠谱吗
  • 网站如何收费企业邮箱账号
  • 电商推广费用占比上海优化公司有哪些
  • 长春建站塔山双喜百度免费下载安装
  • 南宁网站建设公司哪家好电脑网络优化软件
  • 班级网站开发河南网站推广那家好
  • 用ps怎么做网站的效果图搜索引擎优化的对比
  • 做网站为什么需要购买域名站内关键词自然排名优化
  • b2b网站快速做百度权重百度站长官网
  • 苏州吴中区建设局网站seo的基本步骤包括哪些
  • 深圳做营销型网站石家庄最新疫情
  • 网站建设期末考试答案网站一级域名和二级域名区别
  • 设计网站页面设计深圳seo优化推广公司
  • 商城类网站怎么优化seo资源咨询
  • 网站备案时间太长游戏代理300元一天
  • wordpress 目录菜单深圳最好的外贸seo培训
  • 深圳B2C网站建设在线推广网站的方法
  • 移动网站开发 书南京今日新闻头条
  • 购物网站开发会遇到的的问题全国前十名小程序开发公司
  • 手机网站应该怎么做今日最新国际新闻