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

客服网站在线怎么优化整站

客服网站在线,怎么优化整站,品牌营销是什么工作,广西做网站目录 一、总体流程 二、LangChain PDF 问答执行流程 2.1 加载环境变量(如 API Key) 2.2 加载 PDF 文档并按页解析 2.3 文本切割(将每页切成小段用于向量化) 2.4 嵌入生成 向量存储(使用 OpenAIEmbeddings …

目录

一、总体流程 

二、LangChain PDF 问答执行流程

2.1 加载环境变量(如 API Key)

2.2  加载 PDF 文档并按页解析

2.3  文本切割(将每页切成小段用于向量化)

2.4  嵌入生成 + 向量存储(使用 OpenAIEmbeddings + Chroma)

2.5  设置向量检索器(基于相似度+限制最多返回K条)

 2.6 用户提问 → 检索相关内容

 2.8 调用大语言模型回答问题

三、完整代码流程



 这是一个基于 LangChain 的 PDF 问答系统,支持加载 PDF 文档,将内容切割后生成向量索引,用户提问时通过语义检索获取相关内容,并调用大语言模型(如 GPT-4o)在检索结果基础上准确回答问题。系统具备高效检索、智能问答和防止幻觉的能力。

一、总体流程 

PDF → 分页 → 切段 → 嵌入 → 向量存储
                                        ↓
                                  用户提问 → 相似片段检索 → 拼 prompt → GPT 回答 

执行流程简述

  1. 加载 PDF:
    使用 PyPDFLoader 加载 PDF 文档,并按页分割。

  2. 切割文本:
    RecursiveCharacterTextSplitter 把每页内容切成更小的段落,便于后续嵌入处理。

  3. 生成向量:
    OpenAIEmbeddings 将切片转为向量,存入 Chroma 向量数据库中。

  4. 设置检索器:
    配置 Retriever,通过相似度筛选出与用户问题相关的 3~5 个段落。

  5. 构造提示词 Prompt:
    将检索结果拼成一段“已知信息”,插入到提示词模板中。

  6. 调用大模型回答:
    使用 ChatOpenAI(如 GPT-4o)输入 Prompt,生成回答并输出。


二、LangChain PDF 问答执行流程

2.1 加载环境变量(如 API Key)

from dotenv import load_dotenv
load_dotenv()

2.2  加载 PDF 文档并按页解析

from langchain_community.document_loaders import PyPDFLoaderloader = PyPDFLoader("你的PDF路径.pdf")
pages = loader.load_and_split()

2.3  文本切割(将每页切成小段用于向量化)

from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=200,chunk_overlap=100,add_start_index=True
)paragraphs = []
for page in pages:paragraphs.extend(text_splitter.create_documents([page.page_content]))

2.4  嵌入生成 + 向量存储(使用 OpenAIEmbeddings + Chroma)

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chromaembedding = OpenAIEmbeddings()
db = Chroma.from_documents(paragraphs, embedding)

 


2.5  设置向量检索器(基于相似度+限制最多返回K条)

retriever = db.as_retriever(search_type="similarity_score_threshold",search_kwargs={"score_threshold": 0.3,"k": 4}
)

 2.6 用户提问 → 检索相关内容

query = "孩子考级有什么用?"
docs = retriever.invoke(query)info_text = "\n".join([doc.page_content for doc in docs])

2.7 构造提示词 Prompt

from langchain.prompts import PromptTemplateprompt_template = """
你是一个问答机器人。
你的任务是根据下述给定的已知信息回答用户问题。
确保你的回复完全依据下述已知信息。不要编造答案。
如果下述已知信息不足以回答用户的问题,请直接回复"我无法回答您的问题"。已知信息:
{info}用户问:
{question}请用中文回答用户问题。
"""prompt = PromptTemplate.from_template(prompt_template).format(info=info_text,question=query
)

 2.8 调用大语言模型回答问题

from langchain_openai import ChatOpenAIllm = ChatOpenAI(model_name="gpt-4o")
response = llm.invoke(prompt)print(response.content)

 

三、完整代码流程

from dotenv import load_dotenv
load_dotenv()
from langchain_community.document_loaders import PyPDFLoader#===========1、文档加载===========
loader=PyPDFLoader(r"D:\file\关于中国电子学会考级比较关注的问题!.pdf")
pages=loader.load_and_split()#===========2、文档切割===========
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter=RecursiveCharacterTextSplitter(chunk_size=200,chunk_overlap=100,length_function=len,add_start_index=True
)
paragraph=[]
for page in pages:paragraph.extend(text_splitter.create_documents([page.page_content]))#===========3、向量存储===========
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
embedding=OpenAIEmbeddings()
db=Chroma.from_documents(paragraph,embedding)#===========4、向量检索===========
retriever=db.as_retriever(search_type="similarity_score_threshold",search_kwargs={"score_threshold": 0.3,  # 保证相关性"k": 1                   # 最多返回 1 个相关片段}
)
docs=retriever.invoke("考级有什么用?")for i,doc in enumerate(docs):print("-"*68)print(f"第{i+1}段:")print(doc.page_content)# ===========5、组装提示词===========
from langchain.prompts import PromptTemplateprompt_template = """
你是一个问答机器人。
你的任务是根据下述给定的已知信息回答用户问题。
确保你的回复完全依据下述已知信息。不要编造答案。
如果下述已知信息不足以回答用户的问题,请直接回复"我无法回答您的问题"。已知信息:
{info}用户问:
{question}请用中文回答用户问题。
"""template = PromptTemplate.from_template(prompt_template)# 拼接 info 文本
info_text = "\n".join([doc.page_content for doc in docs])# 构造 prompt
prompt = template.format(info=info_text,question="考级有什么用"
)print("="*68)
print("提示词为:\n", prompt)# ============6、调用语言模型===========
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-4o")try:res = llm.invoke(prompt)print("\n\n", "="*68)print(f"语言大模型:\n{res.content}")
except Exception as e:print(f"模型调用失败:{e}")

运行结果

--------------------------------------------------------------------
第1段:
①为什么要参加考级?学生的角度:机器人等级考试是一个见证孩子成
长的过程,是对孩子一段时间学习成果的检验,
也是给孩子们提供了一个展示自我的平台,通过
与同龄人之间的比较,开阔自己的视野;同时锻
炼同学们线上 / 线下考试的临场发挥能力,对于以
后参加考试或者比赛积累经验;通过考试还可以
增加同学们的信心,增强自信,获取成就感,为
长期学习机器人课程助力。
====================================================================
提示词为:你是一个问答机器人。
你的任务是根据下述给定的已知信息回答用户问题。
确保你的回复完全依据下述已知信息。不要编造答案。
如果下述已知信息不足以回答用户的问题,请直接回复"我无法回答您的问题"。已知信息:
①为什么要参加考级?学生的角度:机器人等级考试是一个见证孩子成
长的过程,是对孩子一段时间学习成果的检验,
也是给孩子们提供了一个展示自我的平台,通过
与同龄人之间的比较,开阔自己的视野;同时锻
炼同学们线上 / 线下考试的临场发挥能力,对于以
后参加考试或者比赛积累经验;通过考试还可以
增加同学们的信心,增强自信,获取成就感,为
长期学习机器人课程助力。用户问:
考级有什么用请用中文回答用户问题。====================================================================
语言大模型:
参加考级有助于见证孩子的成长过程,是对他们一段时间学习成果的检验,并提供展示自我的平台。通过与同龄人的比较,孩子们可以开阔视野,锻炼线上线下考试的临场发挥能力,为以后参加考试或比赛积累经验。此外,考级可以增加孩子们的信心,增强自信,获取成就感,为长期学习机器人课程助力。
http://www.dtcms.com/wzjs/494288.html

相关文章:

  • 柳传志 潘石屹做水果网站中国十大公关公司排名
  • web网站开发流程图商丘网站建设公司
  • 济南网站建设销售招聘seo在线优化排名
  • 织梦网站漏洞修复上海关键词优化报价
  • 大连大型网站制作公司今日头条号官网
  • 免费祝福网页在线制作seo点击排名软件营销工具
  • 做网站做国外广告今日头条站长平台
  • 网站前台的实现拉人注册给佣金的app
  • 衡阳seo网站推广百度seo优化规则
  • 无锡开发网站建设百度推广关键词排名在哪看
  • 网站怎样恶意刷nba最新赛程
  • 网站推广方案及预算国际新闻大事
  • 企业网站的需求是什么优化营商环境发言材料
  • 质监局网站建设总结百度排名优化工具
  • 建设雅马哈摩托车网站appstore关键词优化
  • 编程 毕业设计代做网站杭州做seo的公司
  • 网站建设类合同范本排行榜
  • 网站卖东西怎么做的自己的网站怎么建立
  • 安徽省住房和城乡建设厅网站首页软文是什么样子的
  • 免费建网站哪个平台好南京seo网站优化推广
  • 教做布艺的网站百度软文推广公司
  • 怎样把自己做的网站发布友链交易网
  • 网页代理免费湖南有实力seo优化
  • WordPress主题开发核心主食seo视频教程汇总
  • 万能小偷程序做网站网络营销策略的定义
  • 天津网站开发工资水平黄山seo
  • 手机免费建设网站nba总得分排行榜最新
  • 济宁网站建设 田振5000元做百度推广效果怎么样
  • 北京网站优化seo企业网络营销方法
  • 西部数据网站建设十大免费域名