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

做ftp网站怎么设置广告推广赚钱

做ftp网站怎么设置,广告推广赚钱,wordpress做外贸网站,宁波网站建设营销推广闲来无事,想研究一下RAG的实现流程,看网上用langchain的比较多,我自己在下面也跑了跑,代码很简单,以次博客记录一下,方便回顾 langchain LangChain 是一个基于大型语言模型(LLM)开发…

闲来无事,想研究一下RAG的实现流程,看网上用langchain的比较多,我自己在下面也跑了跑,代码很简单,以次博客记录一下,方便回顾

langchain

LangChain 是一个基于大型语言模型(LLM)开发应用程序的框架。LangChain 简化了LLM应用程序生命周期的每个阶段。

比如,在下面的实现中,LangChain可以将LLM提示词模板检索器组合在一起快速的完成检索增强整个流程,而不需要你去关心底层具体是怎么实现的。

代码demo

实现思路:

  1. 加载文档,并对文档进行切分
  2. 将切分后的文档转化为向量,存储到向量库中
  3. 根据用户query去向量库中检索,找到最相关的回复,并拼接到prompt中
  4. 根据最新的prompt调用大模型产生增强回复

加载文档 -> 切分文档 -> 创建向量数据库 -> 执行相似度搜索 -> 构建并增强 prompt -> 使用模型生成回答

import os
from openai import OpenAI
import requests
from langchain.text_splitter import CharacterTextSplitter
from weaviate.embedded import EmbeddedOptions
from langchain.prompts import ChatPromptTemplate
from langchain.schema.runnable import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParserfrom langchain_community.document_loaders import TextLoader
from langchain_community.chat_models import ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.schema import Document
from langchain_core.messages import HumanMessage, SystemMessage"""
实现一
"""
def method_one(vectorstore,llm,query):# 根据用户query进行检索,并将检索结果拼接到prompt中def augment_prompt(query: str):# 获取top2的文本片段results = vectorstore.similarity_search(query, k=1)source_knowledge = "\n\n".join([x.page_content for x in results])# 构建promptaugmented_prompt = f"""你叫david,你需要解答xxx问题###参考样例###{source_knowledge}"""return augmented_promptprompt=augment_prompt(query)print(prompt)# 封装输入messages = [SystemMessage(content=prompt),HumanMessage(content=query),]# 生成检索增强回复res = llm.invoke(messages)return res.content"""
实现二
"""
def method_two(vectorstore,llm,query):# 将 vectorstore 转换为一个检索器retriever = vectorstore.as_retriever()# 定义提示模板template = """你叫david,你需要解答xxx问题###参考样例###{context}###用户问题###{question}"""prompt = ChatPromptTemplate.from_template(template)print(prompt)# LangChain 提供了一个高度模块化和可组合的框架就是链,使得你可以根据任务的特性自定义每个组件,并将它们按需组合成执行流程# 定义一个执行流程链,包含如下组件# {"context": retriever,  "question": RunnablePassthrough()}:用来将上下文(通过检索器获得)和用户问题传递给后续组件# prompt里面的占位符与上述定义的context和question是要保持一致的# StrOutputParser():该组件用于解析模型的输出,将其转换为字符串格式rag_chain = ({"context": retriever,  "question": RunnablePassthrough()}| prompt| llm| StrOutputParser())response = rag_chain.invoke(query)return responseif __name__=="__main__":# 加载单个文档,这里只需要匹配单个文档里面的片段path="../rag/faq.txt"loader = TextLoader(path)documents = loader.load()# 如果需要加载多个文档,将上述path改为跟路径即可,然后通过下述两行代码对多个文档进行切分# text_splitter = CharacterTextSplitter()# doc = text_splitter.split_documents(documents)# 切分文档,给定的文档内容主要是通过换行符分隔的text = documents[0].page_contentchunks = [Document(page_content=chunk) for chunk in text.split("\n\n\n") if chunk.strip()]#  将文档片段转化为向量,并存储到 # Chroma 是一个 开源的向量数据库,用于存储和检索向量嵌入model_name = "../model/bge-base-zh-v1.5"embedding = HuggingFaceEmbeddings(model_name=model_name)vectorstore_hf = Chroma.from_documents(documents=chunks, embedding=embedding , collection_name="huggingface_embed")vectorstore = Chroma.from_documents(chunks, embedding)# 初始化对话模型llm = ChatOpenAI(openai_api_key="",openai_api_base="",model='qwen-max')# 用户queryquery = "今天天气如何?"# 检索增强之后的回答enhanced_result=method_one(vectorstore,llm,query)# enhanced_result=method_two(vectorstore,llm,query)print(enhanced_result)

思考

  • 在尝试中发现,文档的嵌入模型选择对匹配结果也影响很大
  • 文档越规范越好切(不同的切分规则对检索和增强都有影响)
http://www.dtcms.com/wzjs/283247.html

相关文章:

  • 老虎淘客系统可以做网站吗网络营销和电子商务的区别
  • 黑白高端网站建设鲜花网络营销推广方案
  • 个人怎么交社保西安seo培训
  • 网站公安备案号怎么使用怎样建网站?
  • 如何做公司网站推广口红的推广软文
  • 如何破解wordpress苏州网站建设优化
  • 广州公司招聘seo百度关键词优化
  • 自己有网站怎么做优化成都网站建设企业
  • 做网站被坑能找司法吗seo关键词选取工具
  • 赣州网站建设多少钱宁波优化网站排名软件
  • 公司网站域名申请流程宁波seo快速优化公司
  • 辉县市工程建设网站建设百度网盘官方网站
  • 网站新闻页设计百度广告怎么投放多少钱
  • 做网站的公司哪家靠谱30个免费货源网站
  • 郑州网站建设郑州网络推广阿里指数数据分析平台
  • 自己网站建设多少钱磁力最好用的搜索引擎
  • 做网站需要用什么开发软件网站建设详细方案模板
  • 营销型集团网站建设seo博客网址
  • 网站客服软件哪个好哪些网站可以发广告
  • 网站如何开启gzip压缩百度推广没有一点效果
  • 网站安全设计网址大全名称
  • 医药网站建设需要注意点深圳开发公司网站建设
  • 郑州营销型网站制作策划厦门网站建设平台
  • 昆明网站seo外包奶茶推广软文200字
  • 游戏策划是做什么的seo优化排名易下拉软件
  • 网站建设类行业资讯360收录批量查询
  • 网站开发于制作总结制作网站大概多少钱
  • 网站开发公司宣传语企业邮箱网页版
  • 建设网站方法app代理推广合作
  • Java做新闻网站网店推广实训系统