AI 大模型企业应用实战(13)-Lostinthemiddle长上下文精度处理

1 长文本切分信息丢失处理方案

  • 10+检索时性能大幅下降
  • 相关信息在头尾性能最高
  • 检索 ->> 排序 ->使用

实战

安装依赖:

! pip install sentence-transformers

演示如何使用 Langchain 库中的组件来处理长文本和检索相关信息。

  1. 导入所需的库
  2. 使用指定的预训练模型(MiniLM-L6-v2)创建嵌入对象
  3. 定义一系列与用户兴趣相关的文本
  4. 使用 Chroma 类从文本和嵌入中创建一个检索器,并设置搜索参数为返回前10个最相关的文档
  5. 定义一个查询语句,用于从检索到的文档中筛选相关信息
  6. 使用检索器根据查询语句获取相关文档
  7. 打印检索到的相关文档
# 导入所需的库
from langchain.chains import LLMChain, StuffDocumentsChain
from langchain.document_transformers import LongContextReorder
from langchain.embeddings import HuggingFaceBgeEmbeddings
from langchain.vectorstores import Chroma

# 使用Hugging Face托管的开源LLM来进行嵌入,这里选择MiniLM-L6-v2作为较小的LLM模型
# 向量维度为384维,支持多种语言。
embeddings = HuggingFaceBgeEmbeddings(model_name="all-MiniLM-L6-v2")

# 模拟一段长文本,这里是一系列与用户兴趣相关的句子
text = [
    "篮球是一项伟大的运动。",
    "带我飞往月球是我最喜欢的歌曲之一。",
    "凯尔特人队是我最喜欢的球队。",
    "这是一篇关于波士顿凯尔特人的文件。",
    "我非常喜欢去看电影。",
    "波士顿凯尔特人队以20分的优势赢得了比赛。",
    "这只是一段随机的文字。",
    "《艾尔登之环》是过去15年最好的游戏之一。",
    "L.科内特是凯尔特人队最好的球员之一。",
    "拉里.伯德是一位标志性的NBA球员。"
]

# 使用Chroma从文本和嵌入中创建一个检索器,并设置搜索参数为返回前10个最相关的文档
retrieval = Chroma.from_texts(text, embeddings).as_retriever(
    search_kwargs={"k": 10}
)

# 定义查询语句
query = "关于我的喜好都知道什么?"

# 根据相关性从检索器中获取相关文档
docs = retrieval.get_relevant_documents(query)

# 打印结果
docs

HuggingFaceBgeEmbeddings V.S HuggingFaceEmbeddings

都是基于 Hugging Face Transformers 库的嵌入类,用于将文本转换为向量表示。它们之间的主要区别在于使用的预训练模型和数据集不同。

HuggingFaceEmbeddings 是基于 BERT(Bidirectional Encoder Representations from Transformers)模型的嵌入类,它使用了英文预训练模型。BERT 是一种基于 Transformer 结构的深度学习模型,通过在大规模语料库上进行预训练,学习到了丰富的语言表示能力。HuggingFaceEmbeddings 支持多种语言,包括中文,但默认情况下使用的是英文预训练模型。

HuggingFaceBgeEmbeddings 是针对中文场景特别优化的嵌入类,它使用了中文预训练模型。这些模型在大量的中文文本数据上进行预训练,能够更好地捕捉中文的语言特征和语义信息。HuggingFaceBgeEmbeddings 只支持中文,不支持其他语言。

因此,如需要处理英文文本,可以选择使用 HuggingFaceEmbeddings。如果您需要处理中文文本,建议使用 HuggingFaceBgeEmbeddings。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM应用开发

    目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/736698.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Posix多线程编程总结

Posix在线文档: The Single UNIX Specification, Version 2 (opengroup.org) 本文主要参考这位大神的文章: Posix多线程编程学习笔记 - 凌峰布衣 - 博客园 (cnblogs.com) 线程安全问题 多线程编程中,经常遇到的就是线程安全问题,或…

图片覆盖攻击

点击劫持的本质是一种视觉欺骗。顺着这个思路,还有一些攻击方法也可以起到类似的作 用,比如图片覆盖。 一名叫 sven.vetsch 的安全研究者最先提出了这种 Cross Site Image Overlaying 攻击,简称 XSIO。sven.vetsch 通过调整图片的 style 使得…

CDP问卷的目的是什么?CDP问卷对企业有什么好处

CDP问卷(Carbon Disclosure Project问卷)的目的是多方面的,主要包括以下几点: 推动透明度:CDP问卷要求企业公开披露其温室气体排放数据、减排目标和行动,以及气候风险管理策略等信息。这有助于增强企业的透…

Linux进程概念(二)

上期我们已经学习了进程的基础的内容,已经对进程的基本概念有了了解,知道了进程的组成, 本期我们将以操作为主进一步探讨进程的相关概念。 目录 查看进程 创建进程 查看进程 查看进程主要有两种方式。 ps ajx指令 在当前目录下有名为tes…

Canvas绘制图片和区域

如何使用Canvas在图片上绘制区域? 一. 首先,我们需要初始化三个canvas画布(初始化Canvas) initCanvas() {// 初始化canvas画布let canvasWrap document.getElementsByClassName("canvas-wrap");this.wrapWidth canva…

更改ip后还被封是ip质量的原因吗?

不同的代理IP的质量相同,一般来说可以根据以下几个因素来进行判断: 1.可用率 可用率就是提取的这些代理IP中可以正常使用的比率。假如我们无法使用某个代理IP请求目标网站或者请求超时,那么就代表这个代理不可用,一般来说免费代…

ubuntu18.04 编译HBA 并实例运行

HBA是一个激光点云层级式的全局优化的程序,他的论文题目是:HBA: A Globally Consistent and Efficient Large-Scale LiDAR Mapping Module,对应的github地址是:HKU-Mars-Lab GitHub 学习本博客,可以学到gtsam安装&am…

Vienna 整流器的基本原理及数学模型

2.1 Vienna 整流器基本工作原理 2.1.1 主电路拓扑结构分析 Vienna 整流器系统的主电路包含用于升压的三相电感、三相桥臂和两个直流侧均压电容。通过有规律的对双向开关进行控制不仅能实现功率双向流动,还能使网侧电流时刻跟踪电网电压,使系统运行在高…

昇思25天学习打卡营第5天|网络构建

一、简介: 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类(这个类和pytorch中的modul类是一样的作用),也是…

陀螺仪LSM6DSV16X与AI集成(7)----FIFO数据读取与配置

陀螺仪LSM6DSV16X与AI集成.7--检测自由落体 概述视频教学样品申请源码下载主要内容生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置量程设置FIFO水印设置速率使用流模式设置FIFO时间戳批处理速率使能时间戳FIFO状态寄存器演示…

Mathtype7在Word2016中闪退(安装过6)

安装教程:https://blog.csdn.net/Little_pudding10/article/details/135465291 Mathtype7在Word2016中闪退是因为安装过Mathtype6,MathPage.wll和MathType Comm***.dotm),不会随着Mathtype的删除自动删除,而新版的Mathtype中的文件…

【从0实现React18】 (三) 初探reconciler 带你初步探寻React的核心逻辑

Reconciler 使React核心逻辑所在的模块,中文名叫协调器,协调(reconciler)就是diff算法的意思 reconciler有什么用? 在前端框架出现之前,通常会使用 jQuery 这样的库来开发页面。jQuery 是一个过程驱动的库,开发者需要…

Django 模版过滤器

Django模版过滤器是一个非常有用的功能,它允许我们在模版中处理数据。过滤器看起来像这样:{{ name|lower }},这将把变量name的值转换为小写。 1,创建应用 python manage.py startapp app5 2,注册应用 Test/Test/sett…

【git1】指令,commit,免密

文章目录 1.常用指令:git branch查看本地分支, -r查看远程分支, -a查看本地和远程,-v查看各分支最后一次提交, -D删除分支2.commit规范:git commit进入vi界面(进入前要git config core.editor vim设一下vi模…

Java项目:基于SSM框架实现的精品酒销售管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的精品酒销售管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功…

【break】大头哥哥做题

【break】大头哥哥做题 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int sum 0;//求和int day 0;//天数 while(1){int a;cin>>a;if(a-1){break;//结束当前循环 }sum sum a; …

121.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件读取与发送界面设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Nginx+Lua+Redis 实现Nginx301跳转配置管理

业务场景需求 long long ago&#xff1a; 在项目的运维过程中有一次SEO团队提出 网页的URL 中如果可以带上关键字&#xff0c;那么网页在各大搜索引擎中收录和排名有非常重大的突出优势&#xff08;~~SEO团队到底专不专业 ~~&#xff0c;此处不做置评&#xff09;&#xff0c;…

C/C++ strftime函数

目录 strftime()函数 函数原型 头文件 功能 返回值 参数 案例 结语 strftime()函数 函数原型 size_t strftime(char *s, size_t max, const char *format, const struct tm *tm); 头文件 #include <time.h> 功能 用于日期和时间格式化的函数&#xff0c;它允许你…

【算法】二叉树 - 理论基础

1.种类 1.1 满二叉树 只有度为0和2的节点&#xff0c;且度为0的节点都都在同一层。深度为k&#xff0c;有2^k-1个节点。 1.2 完全二叉树 在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都…