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

网站详细报价百度推广费用可以退吗

网站详细报价,百度推广费用可以退吗,任县网站建设价格信息,广州市建设厅官方网站🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…

🧠 向所有学习者致敬!

“学习不是装满一桶水,而是点燃一把火。” —— 叶芝


我的博客主页: https://lizheng.blog.csdn.net

🌐 欢迎点击加入AI人工智能社区!

🚀 让我们一起努力,共创AI未来! 🚀


本文将实现一种针对PDF文档处理的语义分块方法,该方法最初由Greg Kamradt提出,后由LangChain团队实现。与传统基于固定字符或单词数量的文本分割方式不同,语义分块旨在创建更具意义且上下文感知的文本片段。
在这里插入图片描述

设计动机

传统文本分割方法常在任意位置切断文档,可能破坏信息流的连贯性和上下文关联。语义分块通过尝试在更自然的断点处分割文本来解决这个问题,从而保持每个文本块内部的语义连贯性。

核心组件

  1. PDF处理与文本提取
  2. 使用LangChain的SemanticChunker进行语义分块
  3. 基于FAISS和OpenAI嵌入向量的向量存储库构建
  4. 面向文档查询的检索器配置

方法详解

pip install --quiet langchain_experimental langchain_openai

文档预处理

  1. 通过自定义的read_pdf_to_string函数读取PDF并将其转换为字符串格式。

语义分块

  1. 使用LangChain的SemanticChunker结合OpenAI嵌入向量
  2. 提供三种断点检测类型:
    • ‘percentile’(百分位):在差异超过X百分位处分割
    • ‘standard_deviation’(标准差):在差异超过X个标准差处分割
    • ‘interquartile’(四分位距):使用四分位间距确定分割点
  3. 本实现采用’percentile’方法,阈值设置为90

向量存储库构建

  1. 使用OpenAI嵌入向量为语义分块创建向量表示
  2. 基于这些嵌入向量构建FAISS向量存储库以实现高效相似性搜索

检索器配置

  1. 检索器设置为针对给定查询返回最相关的2个文本块

核心特性

  1. 上下文感知分割:保持文本块内部的语义连贯性
  2. 灵活配置:支持不同的断点类型和阈值设置
  3. 先进NLP工具集成:在分块和检索阶段均使用OpenAI嵌入向量

技术优势

  1. 更强的连贯性:文本块更可能包含完整的思想或观点
  2. 更高的检索相关性:通过保持上下文提升检索准确率
  3. 良好的适应性:可根据文档特性和检索需求调整分块方法
  4. 潜在的理解提升:LLM或下游任务可能因更连贯的文本片段而表现更好

实现细节

  1. 使用OpenAI嵌入向量同时处理语义分块和最终向量表示
  2. 采用FAISS构建高效的可搜索分块索引
  3. 检索器默认返回最相关的2个文本块(可根据需求调整)

使用示例

代码包含测试查询:“What is the main cause of climate change?”(气候变化的主要原因是什么?),展示了如何使用语义分块和检索系统从处理后的文档中查找相关信息。

结论

语义分块代表了面向检索系统的文档处理高级方法。通过保持文本片段的语义连贯性,它有望提升检索信息质量并增强下游NLP任务性能。该技术特别适用于处理需要保持上下文完整性的长文档和复杂文档,如科研论文、法律文书或综合性报告等。

语义分块对比

库文件导入

import os
import sys
from dotenv import load_dotenvsys.path.append(os.path.abspath(os.path.join(os.getcwd(), '..'))) # 将父目录加入路径(适用于notebook环境)
from helper_functions import *
from evaluation.evalute_rag import *from langchain_experimental.text_splitter import SemanticChunker
from langchain_openai.embeddings import OpenAIEmbeddings# 从.env文件加载环境变量
load_dotenv()# 设置OpenAI API密钥环境变量
os.environ["OPENAI_API_KEY"] = os.getenv('OPENAI_API_KEY')

定义文件路径

path = "../data/Understanding_Climate_Change.pdf"

将PDF读取为字符串

content = read_pdf_to_string(path)

断点类型说明:

  • ‘percentile’(百分位):计算所有句子间差异,在超过X百分位的差异处分割;在此方法中,计算句子之间的所有差异,然后拆分任何大于X百分位数的差异。X的默认值为95.0,可以通过关键字参数breakpoint_threshold_amount进行调整,该参数期望一个介于0.0和100.0之间的数字。
  • ‘standard_deviation’(标准差):在超过X个标准差的差异处分割;X的默认值为3.0,可以通过关键字参数breakpoint_threshold_amount进行调整。
  • ‘interquartile’(四分位距):使用四分位间距进行分块;四分位范围可以通过关键字参数breakpoint_threshold_amount缩放,默认值为1.5
  • 'Gradient’​ (渐变) :在该方法中,距离梯度与百分位数方法一起用于分割块。当块彼此高度相关或特定于领域(例如法律或医学)时,该方法很有用。这个想法是在梯度数组上应用异常检测,以便分布变得更宽,并且易于识别高度语义数据中的边界。与百分位数方法类似,可以通过关键字参数breakpoint_threshold_amount来调整分割,该参数期望一个介于0.0和100.0之间的数字,默认值为95.0
text_splitter = SemanticChunker(OpenAIEmbeddings(), breakpoint_threshold_type='percentile', breakpoint_threshold_amount=90) # 选择嵌入模型、断点类型及阈值

将原始文本分割成语义分块

docs = text_splitter.create_documents([content])

创建向量存储库和检索器

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embeddings)
chunks_query_retriever = vectorstore.as_retriever(search_kwargs={"k": 2})

测试检索器

test_query = "What is the main cause of climate change?"
context = retrieve_context_per_question(test_query, chunks_query_retriever)
show_context(context)
http://www.dtcms.com/wzjs/785281.html

相关文章:

  • 网站备案需要什么材料厦门成品网站
  • 湖北网站建设报价泰安房产中介公司
  • 亳州市建设工程质量监督站网站青海公司网站建设哪家快
  • 建设一个视频网站己18深圳投资推广署
  • 订阅号怎么做微网站建站公司获客成本
  • 什么网站可以做锦鲤活动虚拟主机建设二个网站
  • 旅游网站怎样做宣传企业做网站公司哪家好
  • 漳浦建设局网站网站友情链接美化代码
  • 南京网站销售猎头网站 做猎头的流程
  • 化工建网站多少费用大朗镇做网站
  • 网站轮播代码最新网站技术
  • 哪些企业网站使用水墨风格教程网站建设
  • 图表生成网站网址短链接生成
  • 织梦商城网站源码wordpress免费主题破解
  • 网站节点加速在线生成签名免费
  • 《网站建设》期末考试免费的网页设计成品详解
  • 网站的结构包括哪些内容厦门 外贸公司做网站
  • 做精酿啤酒购买的网站青羊区网站建设公司
  • 怎么推广一个网站网站更换空间改版收录
  • 帝国 网站搬家江阴市做网站的
  • app 微商城网站建设微信小程序开发环境搭建
  • 精通网站建设做庭院景观的那个网站推广好
  • 做企业网站的大连网站优化快速排名
  • 网站开发讲座wordpress 萌主题
  • 建设网站用什么代码写好呢公共资源交易中心网站建设汇报
  • 品划网络做营销型网站php可以自己做网站吗
  • 延庆精神文明建设的门户网站中国建筑信息查询平台
  • 网站制作后还能更改么虎皮椒支付WordPress
  • 人才网站建设报告成品人和精品人的区别在哪
  • 做网站需要什么手续资料seo内部优化方式包括