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

大模型RAG (三)

一、文档的加载和分割1、文档LLM回复系统搭建2、把文本切分成chunks把文本切分成chunks的方式有很多种1.按照句子来切分2.按照字符数来切分3.按固定字符数结合overlapping window4. 递归方法 RecursiveCharacterTextSplitter案例1: 按照句子来切分import re txts(大语言模型是基于深度学习架构、通过海量文本数据训练而成的人工智能系统。它能够理解自然语言、生成连贯文本并在对话、翻译、摘要、创作等多种任务中表现出接近人类的表达能力。模型的性能通常与其参数量、训练数据规模和优化算法密切相关。随着技术不断迭代大模型已从单一文本生成逐步走向多模态理解、逻辑推理与工具调用成为新一代人工智能应用的重要基础。) #正则表达式匹配中文句子结束的标点符合 sentences re.split(r(。| ||\...\...]), txts) #重新组合句子和结尾的标点符合 chunks[sentence (puncutation if puncutation else ) for sentence, puncutation in zip(sentences[::2], sentences[1::2])] for i ,chunk in enumerate(chunks): print(fchunk {i1}:{len(chunk)}:{chunk})案例2按照字符数来切分import re txts(大语言模型是基于深度学习架构、通过海量文本数据训练而成的人工智能系统。它能够理解自然语言、生成连贯文本并在对话、翻译、摘要、创作等多种任务中表现出接近人类的表达能力。模型的性能通常与其参数量、训练数据规模和优化算法密切相关。随着技术不断迭代大模型已从单一文本生成逐步走向多模态理解、逻辑推理与工具调用成为新一代人工智能应用的重要基础。) def split_fixed_count(text,count): return [text[i:icount] for i in range(0,len(text),count)] #如果按照每50个字符来切分文本 chunkssplit_fixed_count(txts,50) for i ,chunk in enumerate(chunks): print(fchunk {i1}:{len(chunk)}:{chunk})案例3按固定字符数结合overlapping windowimport re txts(大语言模型是基于深度学习架构、通过海量文本数据训练而成的人工智能系统。它能够理解自然语言、生成连贯文本并在对话、翻译、摘要、创作等多种任务中表现出接近人类的表达能力。模型的性能通常与其参数量、训练数据规模和优化算法密切相关。随着技术不断迭代大模型已从单一文本生成逐步走向多模态理解、逻辑推理与工具调用成为新一代人工智能应用的重要基础。) #将文本切分成多个部分 def sliding_chunks(text,chunk_size,step): return [text[i:ichunk_size] for i in range(0,len(text),step)] #如果按照每100个字符来切分文本,步长为50 chunkssliding_chunks(txts,100,50) for i ,chunk in enumerate(chunks): print(fchunk {i1}:{len(chunk)}:{chunk})案例4 递归方法 RecursiveCharacterTextSplitterimport re from langchain_text_splitters import RecursiveCharacterTextSplitter txts ( 大语言模型是基于深度学习架构、通过海量文本数据训练而成的人工智能系统。它能够理解自然语言、生成连贯文本并在对话、翻译、摘要、创作等多种任务中表现出接近人类的表达能力。模型的性能通常与其参数量、训练数据规模和优化算法密切相关。随着技术不断迭代大模型已从单一文本生成逐步走向多模态理解、逻辑推理与工具调用成为新一代人工智能应用的重要基础。) # 初始化分割器 # chunk_size: 每个块的最大长度 # chunk_overlap: 每个块之间的重叠长度 # length_function: 计算文本长度的函数默认是len # RecursiveCharacterTextSplitter会递归地尝试不同的分隔符如段落、句子、单词等来分割文本确保分割后的文本块尽可能完整且有语义意义 text_splitter RecursiveCharacterTextSplitter(chunk_size50, chunk_overlap10, length_functionlen) #一个文本块列表每个文本块的长度不超过50个字符且相邻文本块有10个字符的重叠部分。 chunks text_splitter.split_text(txts) for i, chunk in enumerate(chunks): print(fchunk {i 1}:{len(chunk)}:{chunk})注意安装 pip install langchain安装 pip install langchain-text-splitters新版1.2.15from langchain_text_splitters import ...LangChain 官方做了模块化拆分文本分割器独立成包了。二、向量检索1、检索的方式关键字搜索通过用户输入的关键字来查找文本数据。语义搜索不仅考虑关键词的匹配还考虑词汇之间的语义关系以提供更准确的搜索结果。2、关键字搜索我们需要把相关的信息存储在Redis中。我们需要先安装一个Redis。先下载再直接解压缩。然后cmd进入到对应的目录。然后输入redis-server.exe再安装一个RDM工具来查看导入的数据连接到Redis服务器默认有16个数据库将json中的数据存入到Redis数据库中python安装 pip install redisimport redis # pip install redis from openai import OpenAI from dotenv import load_dotenv import json # 默认加载项目根目录下的 .env 文件 load_dotenv() # 1. 获取client对象OpenAI类对象 clientOpenAI() #2. 获取redis对象 #localhost:指定Redis服务器地址为本地主机 #6379:指定Redis服务器端口为6379 #db0:指定Redis数据库索引为0;(Redis默认有16个数据库0-15) #decode_responsesTrue:指定Redis返回的数据类型为字符串 r redis.Redis(hostlocalhost, port6379, db0,decode_responsesTrue) #3.读取数据 with open(train_zh.json, r, encodingutf-8) as f: data json.load(f) #4.取出问题 instrutions [item[instruction] for item in data[0:800]] #5.输出数据 outputs[item[output] for item in data[0:800]] #6.将数据存入redis for instrution,output in zip(instrutions,outputs): #存入Redis,值序列化为JSON r.set(instrution,output) #key为问题value为答案 #7.查询数据:根据关键字搜索instruction中包含该关键字的条目 def search_instrutions(keyword,top3): # 通过模糊匹配 keysr.keys(pattern*keyword*) data[] #遍历通过模糊匹配找到的所有键 for key in keys: data.append(r.get(key)) return data[:top]

相关文章:

大模型RAG (三)

一、文档的加载和分割1、文档LLM回复系统搭建2、把文本切分成chunks把文本切分成chunks的方式有很多种: 1.按照句子来切分 2.按照字符数来切分 3.按固定字符数结合overlapping window 4. 递归方法 RecursiveCharacterTextSplitter案例1: 按照句子来切分import retxt…...

航空特色学校建设实施方案

【核心亮点】1. "三维一体"课程体系:● 基础课(航空原理/飞行启蒙) 专项课(模拟飞行、航模制作、无人机编程) 学科融合课(航空物理/美术/编程),覆盖全学段。● 自主研发校…...

学工平台变革之旅:从管理到成长赋能,真正为学生点亮前行之路

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

智慧校园的权限管控,如何按角色精准设置操作范围?

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

Java 25虚拟线程性能断崖式跃迁:阿里云真实订单链路压测数据(RT从412ms→23ms,附全链路火焰图)

第一章:Java 25虚拟线程演进脉络与高并发架构新范式Java 25正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,标志着JVM并发模型进入“轻量级线程即原语”时代。这一转变并非孤立演进,而是历经Project Loom多年…...

【毕设】城镇保障性住房管理系统

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

【毕设】城市公园信息管理系统的设计与实现

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

从dbus-send到busctl:手把手教你迁移到更现代的D-Bus调试工具链

从dbus-send到busctl:现代D-Bus调试工具链迁移实战指南 如果你曾经在Linux系统中与D-Bus打交道,那么对dbus-send这个老牌命令行工具一定不陌生。它就像一把瑞士军刀,虽然功能全面但用起来总有些笨拙——复杂的参数构造、晦涩的输出格式、缺乏…...

DevExpress GridControl单元格合并后无法编辑?一个属性帮你避开这个坑

DevExpress GridControl单元格合并实战:解决编辑冲突与高级应用 当我们在企业级应用开发中使用DevExpress的GridControl时,单元格合并是一个常见的可视化需求。想象一下这样的场景:你的财务系统需要展示客户交易记录,而同一个客户…...

别再只会用Canny了!深入对比Sobel、Prewitt、LoG:OpenCV边缘检测算法选型与避坑指南

边缘检测算法深度解析:从Sobel到Canny的工程实践指南 在计算机视觉领域,边缘检测是图像处理中最基础也最关键的步骤之一。许多开发者习惯性地将Canny算子作为默认选择,却忽略了其他算法在不同场景下的独特优势。本文将带您深入理解主流边缘检…...

我的模型总在测试集翻车?可能是数据增强的‘姿势’不对!聊聊那些年我们踩过的坑

模型测试集翻车?数据增强的六大陷阱与实战解决方案 当你满怀期待地将精心调参的模型投入测试集,却发现性能断崖式下跌——这种挫败感每个算法工程师都深有体会。上周团队里一位资深研究员盯着0.23的测试F1分数苦笑:"训练集明明98%准确率…...

MATLAB优化实战:从fminsearch到fmincon的工程问题求解

1. MATLAB优化工具箱入门:从实际问题到数学模型 第一次接触MATLAB优化工具箱时,我被它强大的功能震撼到了。记得当时正在做一个机械臂参数标定的项目,需要根据实验数据反推关节参数。这个问题本质上就是个典型的无约束优化问题,正…...

**链路追踪实战:用Go语言打造分布式系统的“心跳图谱”**在微服务架构日益普及的今天,一

链路追踪实战:用Go语言打造分布式系统的“心跳图谱” 在微服务架构日益普及的今天,一个请求可能跨越多个服务、几十个中间件甚至上百个节点。当问题出现时,传统的日志排查方式早已力不从心。这时,链路追踪(Tracing&am…...

第三章 低通滤波(LPF)

一 应用场景及公式当负载设备VCC需要的电压是1V,但是我们有12V的电压时,就需要使用电阻分压。问题:非理想环境中12V的电压会有波动(噪声)的,故而分出来1V电压也是有噪声的。1.1 容抗公式 :容抗&#xff08…...

PostgreSQL WITH 子句详解

PostgreSQL WITH 子句详解 引言 在数据库查询中,WITH 子句(也称为公用表表达式或 Common Table Expressions,简称 CTE)是一种强大的工具,它允许开发者将查询结果集作为子查询或临时表使用。WITH 子句在 PostgreSQL 中有…...

FPGA实战:手把手教你用Verilog实现有符号数的四舍五入(附完整代码与仿真)

FPGA实战:手把手教你用Verilog实现有符号数的四舍五入(附完整代码与仿真) 在数字信号处理领域,有符号数的四舍五入是一个看似简单却暗藏玄机的操作。许多初学者在处理负数时常常会遇到意想不到的结果,这是因为负数的四…...

工业级3D打印机季度出货回暖,入门级市场再创新高

当行业讨论从“技术突破”逐渐转向“规模落地”,全球3D打印市场正在经历一轮更深层次的结构调整。从TCT Asia 2026现场的热度变化,到厂商战略重心的转移,可以明显感受到:增长的引擎正在重塑,市场逻辑也在悄然变化。而C…...

基于鸿蒙Electron框架的物体碰撞效果测试应用开发详解

欢迎加入开源鸿蒙PC社区: https://harmonypc.csdn.net/ atomgit开源仓库地址: https://atomgit.com/feng8403000/game_Collisioneffect 示例效果 基于鸿蒙Electron框架的物体碰撞效果测试应用开发详解示例效果技术栈选择前端技术后端技术技术优势应用功…...

淘宝图片搜索API:通过图片地址获取淘宝相似商品

下面给你一份可直接用于开发、解析、入库的淘宝图片搜索API 完整解析,包含标准返回结构、关键字段、解析要点、常见坑。一、接口基本信息接口名:taobao.item_search_img作用:通过图片url搜索相似商品,平台外图片地址可先用taobao.…...

FRED应用:模拟沃拉斯顿棱镜偏振器

介绍沃拉斯顿棱镜偏振器包含两个由单轴晶体构成的直角棱镜,如方解石,它经常用于沃拉斯顿棱镜中。两块单轴晶体是定向的,使得晶轴互相垂直。如下图所示的几何结构,水平偏振光在第一个区域中以非寻常折射率(ne&#xff0…...

多元线性回归实战:逐步回归的自动化变量筛选

1. 多元线性回归中的变量筛选难题 做数据分析的朋友们肯定都遇到过这样的困扰:手头有一大堆可能影响结果的变量,但不知道哪些才是真正有用的。比如预测房价时,可能有面积、房龄、地段、装修等几十个因素,全扔进模型不仅计算量大&a…...

从实验室到量产车:BEVFusion多传感器融合方案的落地挑战与调优实战

从实验室到量产车:BEVFusion多传感器融合方案的落地挑战与调优实战 自动驾驶技术正经历从原型验证到规模化量产的跨越,而多传感器融合作为环境感知的核心环节,其工程化落地面临诸多现实挑战。BEVFusion框架通过统一的鸟瞰图(BEV&a…...

Hypnos-i1-8Bmarkdown输出:自动生成含公式、代码块、步骤编号的结构化报告

Hypnos-i1-8B:自动生成含公式、代码块、步骤编号的结构化报告 1. 模型概述 Hypnos-i1-8B是一款专注于强推理能力和思维链(CoT)表现的8B参数开源大模型。该模型基于NousResearch/Hermes-3-Llama-3.1-8B微调而来,通过量子噪声注入训练技术显著提升了在复…...

LSTM在时间序列预测中的核心价值与优化策略

1. 序列预测问题中的LSTM核心价值解析长短期记忆网络(LSTM)作为循环神经网络(RNN)的改进架构,在时间序列预测领域展现出独特优势。与传统RNN相比,LSTM通过精心设计的"门控机制"(输入门…...

基于LangChain构建定制知识库聊天机器人的实践指南

1. 项目概述:定制知识库聊天机器人的核心价值在信息爆炸的时代,如何让AI系统精准掌握特定领域的专业知识,一直是企业级应用的核心痛点。传统聊天机器人要么泛泛而谈,要么需要耗费巨资训练专用模型。而基于LangChain构建的定制知识…...

告别手动配置!用RMServer Aid一键搞定RoboMaster裁判系统服务器(附MySQL 8.0.28集成版)

从零到一:RoboMaster裁判系统服务器自动化搭建全攻略 每次RoboMaster赛季来临,参赛队伍最头疼的莫过于裁判系统服务器的搭建。传统的手动配置方式不仅耗时费力,还容易因为网络设置、MySQL配置等问题导致比赛现场出现意外。我曾见过一支队伍因…...

从‘找相似’到‘算增量’:图解DIC核心算法FA-GN与IC-GN,搞懂它们到底在优化什么

图像匹配的两种思维:FA-GN与IC-GN算法可视化解析 在材料科学、生物力学和工程测量领域,数字图像相关技术(DIC)如同一位精准的"图像侦探",通过分析变形前后的图像差异来捕捉微观形变的蛛丝马迹。这项技术的核…...

**ROS机器人系统中基于Python的动态行为树实现与调试实战**在现代机器人开发中,**行为树(Behavior Tree

ROS机器人系统中基于Python的动态行为树实现与调试实战 在现代机器人开发中,行为树(Behavior Tree, BT) 已成为构建复杂、可维护任务逻辑的核心工具之一。尤其是在 ROS(Robot Operating System) 环境下,结…...

# 发散创新:用Python构建一个可交互的虚拟世界原型——从代码到沉浸式体验在数字技术飞

发散创新:用Python构建一个可交互的虚拟世界原型——从代码到沉浸式体验 在数字技术飞速发展的今天,虚拟世界不再只是科幻电影中的幻想,它正在成为现实开发的重要方向。本文将带你深入实践:如何使用 Python Pygame JSON配置文件…...

**DeFi组合创新实践:基于Solidity的智能合约多资产收益聚合器设计与实现**

DeFi组合创新实践:基于Solidity的智能合约多资产收益聚合器设计与实现 在当前去中心化金融(DeFi)快速演进的背景下,用户对复合收益策略的需求日益增长。传统单一资产理财难以满足高流动性、低风险、多链协同的新型投资场景。本文将…...