RAG实战:手把手教你用LlamaIndex存取Embedding向量!

在之前我们介绍了如何使用LlamaIndex构建一个非常简单的RAG应用,初步了解了LlamaIndex构建RAG应用的大体流程。在运行前篇的程序时,我们会发现两个令人头痛的问题:

  1. 使用llama-index-llms-huggingface构建本地大模型时,会花费相当一部分时间。
  2. 在对文档进行切分,将切分后的片段转化为embedding向量,构建向量索引时,会花费大量的时间。

上面两个问题虽然不会影响程序的使用,但是严重影响了我们的调试。试想一下,如果每次修改几行代码就要等待几分钟启动程序,那确实有点折磨人。

在[搭建一个大模型API服务]中,我们介绍了如何使用SWIFT框架搭建一个大模型API服务,这很好地解决了第一个问题。我们可以将构建本地大模型替换为API服务,这样就不用每次启动程序时都重新加载一遍模型权重了。不过为了方便演示,本文仍使用本地构建的方式加载大模型。本文要解决的痛点是第二个问题。

对于第二个问题,很容易就能想到可以将构建好的embedding向量和向量索引存储在文件或数据库(如Milvus向量数据库)中,然后在需要时从文件或数据库中直接读取这些数据。

存储

下面的代码展示了如何使用LlamaIndex将embedding向量和向量索引存储到文件中。

importloggingimportsysimporttorchfromllama_index.coreimportPromptTemplate,Settings,SimpleDirectoryReader,VectorStoreIndexfromllama_index.core.node_parserimportSentenceSplitterfromllama_index.embeddings.huggingfaceimportHuggingFaceEmbeddingfromllama_index.llms.huggingfaceimportHuggingFaceLLM# 定义日志logging.basicConfig(stream=sys.stdout,level=logging.DEBUG)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))# 定义system promptSYSTEM_PROMPT="""You are a helpful AI assistant."""query_wrapper_prompt=PromptTemplate("[INST]<<SYS>>\n"+SYSTEM_PROMPT+"<</SYS>>\n\n{query_str}[/INST] ")# 使用llama-index创建本地大模型llm=HuggingFaceLLM(context_window=4096,max_new_tokens=2048,generate_kwargs={"temperature":0.0,"do_sample":False},query_wrapper_prompt=query_wrapper_prompt,tokenizer_name='/yldm0226/models/Qwen1.5-14B-Chat',model_name='/yldm0226/models/Qwen1.5-14B-Chat',device_map="auto",model_kwargs={"torch_dtype":torch.float16},)Settings.llm=llm# 使用llama-index-embeddings-huggingface构建本地embedding模型Settings.embed_model=HuggingFaceEmbedding(model_name="/yldm0226/RAG/BAAI/bge-base-zh-v1.5")# 读取文档documents=SimpleDirectoryReader("document").load_data()# 对文档进行切分,将切分后的片段转化为embedding向量,构建向量索引index=VectorStoreIndex.from_documents(documents,transformations=[SentenceSplitter(chunk_size=256)])# 将embedding向量和向量索引存储到文件中index.storage_context.persist(persist_dir='doc_emb')# 构建查询引擎query_engine=index.as_query_engine(similarity_top_k=5)# 查询获得答案response=query_engine.query("不耐疲劳,口燥、咽干可能是哪些证候?")print(response)

关键代码为index.storage_context.persist(persist_dir='doc_emb'),其中persist_dir是存储路径。

运行上述代码,我们可以得到以下输出:

从提供的中医临床证候信息来看,口燥、咽干的症状可能与以下证候相关: 1. 津液不足证:由于津液生成不足或者体内燥热导致,表现为口眼喉鼻干燥,咽干是其中的一个症状。 2. 津亏热结证:津液亏虚加上热邪内结,也可能出现口燥和咽干。 3. 津液亏涸证:严重的津液亏损可能导致口唇干燥、咽部干燥,伴随其他严重脱水症状。 4. 燥干清窍证:气候干燥或体质原因引起的津液缺乏,口鼻咽喉干燥也是其特征。 5. 津伤化燥证:燥热内蕴或内热化燥损伤津液,也会出现口燥、频饮但不解渴的现象。 因此,这些证候都有可能与不耐疲劳和口燥、咽干的症状相符合,需要结合其他临床表现来确定具体的证候类型。建议在中医诊断中由专业医生根据全人情况判断。

我们找到刚才定义的persist_dir所在的路径,可以发现该路径下有以下几个文件:

  • default_vector_store.json:用于存储embedding向量。
  • docstore.json:用于存储文档切分出来的片段。
  • graph_store.json:用于存储知识图数据。
  • image__vector_store.json:用于存储图像数据。
  • index_store.json:用于存储向量索引。

在上述代码中,我们只用到了纯文本文档,所以生成出来的graph_store.json和image__vector_store.json中没有数据。

读取

在将embedding向量和向量索引存储到文件中后,我们就不需要重复地执行对文档进行切分,将切分后的片段转化为embedding向量,构建向量索引的操作了。以下代码演示了如何使用LlamaIndex读取结构化文件中的embedding向量和向量索引数据:

importloggingimportsysimporttorchfromllama_index.coreimportPromptTemplate,Settings,StorageContext,load_index_from_storagefromllama_index.embeddings.huggingfaceimportHuggingFaceEmbeddingfromllama_index.llms.huggingfaceimportHuggingFaceLLM# 定义日志logging.basicConfig(stream=sys.stdout,level=logging.DEBUG)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))# 定义system promptSYSTEM_PROMPT="""You are a helpful AI assistant."""query_wrapper_prompt=PromptTemplate("[INST]<<SYS>>\n"+SYSTEM_PROMPT+"<</SYS>>\n\n{query_str}[/INST] ")# 使用llama-index创建本地大模型llm=HuggingFaceLLM(context_window=4096,max_new_tokens=2048,generate_kwargs={"temperature":0.0,"do_sample":False},query_wrapper_prompt=query_wrapper_prompt,tokenizer_name='/yldm0226/models/Qwen1.5-14B-Chat',model_name='/yldm0226/models/Qwen1.5-14B-Chat',device_map="auto",model_kwargs={"torch_dtype":torch.float16},)Settings.llm=llm# 使用llama-index-embeddings-huggingface构建本地embedding模型Settings.embed_model=HuggingFaceEmbedding(model_name="/yldm0226/RAG/BAAI/bge-base-zh-v1.5")# 从存储文件中读取embedding向量和向量索引storage_context=StorageContext.from_defaults(persist_dir="doc_emb")index=load_index_from_storage(storage_context)# 构建查询引擎query_engine=index.as_query_engine(similarity_top_k=5)# 查询获得答案response=query_engine.query("不耐疲劳,口燥、咽干可能是哪些证候?")print(response)

关键代码为storage_context = StorageContext.from_defaults(persist_dir="doc_emb")index = load_index_from_storage(storage_context),StorageContext.from_defaults(persist_dir="doc_emb")表示从doc_emb目录中读取embedding向量和向量索引,load_index_from_storage(storage_context)表示根据存储的embedding向量和向量索引重新构建检索索引。

运行上述程序,可以得到以下输出:

从提供的中医临床证候信息来看,口燥、咽干的症状可能与以下证候相关: 1. 津液不足证:由于津液生成不足或者体内燥热导致,表现为口眼喉鼻干燥,咽干是其中的一个症状。 2. 津亏热结证:津液亏虚加上热邪内结,也可能出现口燥和咽干。 3. 津液亏涸证:严重的津液亏损可能导致口唇干燥、咽部干燥,伴随其他严重脱水症状。 4. 燥干清窍证:气候干燥或体质原因引起的津液缺乏,口鼻咽喉干燥也是其特征。 5. 津伤化燥证:燥热内蕴或内热化燥损伤津液,也会出现口燥、频饮但不解渴的现象。 因此,这些证候都有可能与不耐疲劳和口燥、咽干的症状相符合,需要结合其他临床表现来确定具体的证候类型。建议在中医诊断中由专业医生根据全人情况判断。

需要注意的是,为了输出的可复现性,我们将大模型的temperature设置为0,do_sample设置为False,所以两次得到的输出基本相同;如果将temperature设置为大于0的小数,do_sample设置为True,大模型每次的输出可能都是不一样的。另外,如果你在实验时获得的输出与文中的输出不一致,这也是正常的,这与多个因素有关。

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01教学内容

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例:带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

vx扫描下方二维码即可

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:

04视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)

05行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!

0690+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30分钟搭建Docker日志监控POC:老板立刻批预算

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个极简但完整的Docker日志监控POC&#xff0c;包含&#xff1a;1) 单节点ELK/PLG栈的docker-compose配置 2) 预置的异常检测规则&#xff08;如5分钟内ERROR超10次&#xff…

边缘计算场景:轻量级MGeo服务部署方案

边缘计算场景&#xff1a;轻量级MGeo服务部署方案 在物联网项目中&#xff0c;经常需要在边缘设备上运行地址识别功能&#xff0c;但边缘设备的计算能力往往有限。MGeo作为达摩院与高德联合推出的地理地址自然语言处理模型&#xff0c;能够高效完成地址要素解析、相似度匹配等任…

安全测试报告撰写模板:专业指南与实践

在当今数字化时代&#xff0c;软件安全已成为企业生存的核心要素。安全测试报告作为测试过程的最终输出&#xff0c;不仅记录漏洞发现&#xff0c;还驱动修复决策和风险管理。本文为软件测试从业者提供一套标准化的撰写模板&#xff0c;涵盖执行摘要、测试范围、方法、发现、建…

收藏备用!AI Agent 记忆系统:从短期到长期的技术架构与实践指南

随着 AI Agent 应用场景的持续拓宽&#xff0c;智能体所要应对的任务复杂度与对话历史长度不断攀升。但大语言模型&#xff08;LLM&#xff09;固有的上下文窗口限制、持续走高的 Token 消耗成本&#xff0c;以及如何让 AI 精准“铭记”用户偏好与历史交互细节等问题&#xff0…

电商系统中处理ClientAbortException的5个实战技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个模拟电商高并发场景的Demo&#xff0c;展示ClientAbortException的典型发生场景。要求&#xff1a;1) 使用JMeter模拟大量用户突然断开连接&#xff1b;2) 展示原始异常日…

构建企业级3D可视化抽奖系统的5个核心技术要点

构建企业级3D可视化抽奖系统的5个核心技术要点 【免费下载链接】log-lottery &#x1f388;&#x1f388;&#x1f388;&#x1f388;年会抽奖程序&#xff0c;threejsvue3 3D球体动态抽奖应用。 项目地址: https://gitcode.com/gh_mirrors/lo/log-lottery 在当今数字化…

1小时原型开发:用FingerprintJS构建访客分析工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个网站访客分析工具原型&#xff0c;功能包括&#xff1a;1) 实时采集访问者指纹&#xff1b;2) 识别新访客与回头客&#xff1b;3) 记录访问路径&#xff1b;4) 简单数…

利特昔替尼Ritlecitinib治疗斑秃的毛发再生疗效持续时间

斑秃作为一种自身免疫性脱发疾病&#xff0c;长期困扰着众多患者&#xff0c;尤其是重度斑秃患者&#xff0c;其生活质量和心理健康受到严重影响。利特昔替尼作为JAK3/TEC抑制剂&#xff0c;为斑秃治疗带来了新的希望&#xff0c;其毛发再生疗效及持续时间备受关注。 多项权威临…

1小时搭建:基于MATS的显卡健康监测系统原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个简易显卡健康监测系统原型&#xff0c;要求&#xff1a;1.集成MATS核心检测功能 2.定时自动运行检测 3.异常结果邮件/短信报警 4.简单的Web管理界面 5.支持多显卡状态概览…

马法兰Melphalan用于多发性骨髓瘤自体干细胞移植预处理的高效清髓作用与黏膜炎管理

多发性骨髓瘤作为血液系统常见的恶性肿瘤&#xff0c;自体干细胞移植&#xff08;ASCT&#xff09;是重要治疗手段&#xff0c;而移植前的预处理环节至关重要。马法兰Melphalan凭借其独特的药理特性&#xff0c;在预处理中发挥着高效清髓的关键作用&#xff0c;同时黏膜炎管理也…

从C#面试题看实际项目开发:常见问题实战解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个实战案例展示平台&#xff0c;将常见的C#面试题与实际项目场景结合。每个面试题对应一个真实项目案例&#xff0c;展示如何在实际开发中应用这些知识点。要求包含代码实现…

实测对比:传统VS AI生成IDEA主题的10倍效率差

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成两份对比材料&#xff1a;1.传统方式创建Material UI主题的详细步骤文档(预计8小时) 2.AI自动生成的同款主题项目(含时间戳)。要求AI版本额外包含&#xff1a;主题参数调节滑块…

保险行业实战:用MGeo实现理赔地址的智能归一化

保险行业实战&#xff1a;用MGeo实现理赔地址的智能归一化 在保险公司的日常风控工作中&#xff0c;一个常见但容易被忽视的问题是&#xff1a;同一条道路在不同保单中可能被表述为"XX大道"或"XX大街"。这种地址表述的不一致性会导致欺诈检测系统出现漏洞&…

多租户方案:基于RBAC的MGeo服务权限管理设计

多租户方案&#xff1a;基于RBAC的MGeo服务权限管理设计 在SaaS平台中为不同客户提供独立的地址校验服务&#xff0c;同时确保数据隔离和用量计费&#xff0c;是许多企业面临的共同挑战。本文将介绍如何基于RBAC&#xff08;基于角色的访问控制&#xff09;设计MGeo服务的多租户…

预存子序列

lc1458两个序列dp 移动i j二维dp: dp[i][j] 表示 nums1 前i个元素和 nums2 前j个元素的最大点积“不取nums1当前元素、不取nums2当前元素、取两者当前元素&#xff08;累加或单独取&#xff09;”四种转移取最大值&#xff0c;最终得到两个数组子序列的最大点积class Solution …

【73页PPT】基于IPD的研发流程管控体系建设:核心定位、IPD体系、核心支撑系统、实施路径与关键案例

本报告系统阐述了基于IPD的研发流程管控体系建设&#xff0c;核心是通过结构化流程&#xff08;阶段、评审点、跨职能团队&#xff09;、技术平台与组合管理&#xff0c;构建产品研发集成环境&#xff08;PDIE&#xff09;。体系深度融合知识工程与多学科仿真&#xff0c;实现流…

Plane项目管理工具:解锁高效任务管理的看板视图秘籍

Plane项目管理工具&#xff1a;解锁高效任务管理的看板视图秘籍 【免费下载链接】plane &#x1f525; &#x1f525; &#x1f525; Open Source JIRA, Linear and Height Alternative. Plane helps you track your issues, epics, and product roadmaps in the simplest way …

AI如何帮你快速构建PYQT桌面应用?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个基于PYQT5的桌面应用程序&#xff0c;实现一个简单的文本编辑器功能。要求包含菜单栏&#xff08;文件、编辑、帮助&#xff09;、工具栏&#xff08;新建、打开、保存&…

【超全】基于SSM的办公用品管理系统【包括源码+文档+调试】

&#x1f495;&#x1f495;发布人&#xff1a; 码上青云 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#xff0c;欢迎咨询。 &#x1f495;&#x1f495;程序开发、技术解答、代码讲解、文档&#xff0c; &#x1f31…

真实案例:开发者违规使用数据的后果与防范

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个案例分析工具&#xff0c;展示开发者违规使用用户数据的真实案例及其后果。功能包括&#xff1a;1. 案例数据库&#xff1b;2. 违规行为分类&#xff1b;3. 法律后果分析&…