2026/5/20 22:49:47
网站建设
项目流程
德阳哪里有做网站的,单人做网站,网站后台如何上传附件,现代简约客厅01 前言
上一篇我们概览了LlamaIndex的整体架构与定位[构建Agents框架#xff5c;LlamaIndex使用概览]#xff0c;接下来将分篇深入其核心功能模块—从RAG、Workflow到Agent#xff0c;再到其生态体系。
RAG#xff08;Retrieval Augmented Generation#xff1a;检索增强…01 前言上一篇我们概览了LlamaIndex的整体架构与定位[构建Agents框架LlamaIndex使用概览]接下来将分篇深入其核心功能模块—从RAG、Workflow到Agent再到其生态体系。RAGRetrieval Augmented Generation检索增强生成是LlamaIndex的核心功能模块覆盖了从数据加载、索引构建到存储管理及检索的全流程。其数据连接与加载能力更是LlamaIndex早期开源阶段的一大亮点。通过连接和检索特定数据片段RAG不仅有效解决了大语言模型LLM面临的上下文长度限制也保障了私有领域数据的安全。02 RAG介绍**RAGRetrieval Augmented Generation检索增强生成**是一种增强大模型上下文来提高大模型回答准确性的有效且重要手段。通过检索特定内容也保障了企业数据的安全。其流程如下(图来自官方)核心步骤包括Loading数据加载通过加载不同的数据源进行数据获取如数据库、PDF、API接口等等方式LlamaIndex目前支持上百种数据源的连接。Indexing索引构建包括对加载数据分块、向量化以及元数据提取向量化通常被用于语义匹配。Storing存储对构建的向量数据和元数据进行存储避免对源数据进行多次向量化操作。Querying检索根据用户问题对数据进行检索召回并加入到大模型的上下文中。常见检索的方式包括向量化语义检索同时伴有元数据过滤、全文关键词检索、混合检索并应用重排序等。**Evaluating**评估效果RAG的效果评估是对结果的检验也是进行优化索引和检索的依据。03 LlamaIndex的RAG实战数据加载LlamaIndex提供了上百种连接数据的方式包括本地文件加载、集成连接器可以通过llamahub搜索、通过文本创建Document。加载后的数据都统一转换成Document类对象。1、本地文件加载from llama_index.core import SimpleDirectoryReader documents SimpleDirectoryReader(../data).load_data() print(fdocument length:{len(documents)}, document:{documents})LlamaIndex中定义了SimpleDirectoryReader类是内置的最简单的方式对本地文件进行加载。示例中会加载当前目录的上级data目录下所有文件。2、集成连接器以DB为例通过连接DB执行Sql查询的每一条数据都是一个Document。# pip3 install llama-index-readers-database from llama_index.readers.database import DatabaseReader # 使用PyMySQLpip3 install pymysql # {root}换成密码 reader_media DatabaseReader( urimysqlpymysql://root:{root}localhost:3306/demo, schemademo, # optional namespace ) # 加载 docs reader_media.load_data( querySELECT id,username,age,sex,register_time,address FROM xudj.user;, # 元数据列 metadata_cols[ (id, user_id), # 参数转换用user_id替代id存储 username, ], # map / include in metadata excluded_text_cols[address], # 剔除字段 document_idlambda row: fxudj-user-{row[id]}, # custom document id ) print(docs)示例首先导入数据库相关依赖这里使用的是Mysql可以通过llamahub.ai/?tabreaders搜索使用方式然后定义DatabaseReader配置连接信息再调用load_data执行sql完成数据加载。3、通过文本创建Documentfrom llama_index.core import Document doc Document(doc_id1, text文本创建, metadata{id:1, type:custom}) print(doc) print(doc.metadata)有了文本这是最直接的方式。索引构建数据加载后有了一系列的Document便可以进行索引的构建。包括长文本按特定规则分块、提取元数据、向量化处理。from llama_index.core.node_parser import TokenTextSplitter from llama_index.core import VectorStoreIndex from llama_index.core import Settings from llama_index.embeddings.dashscope import DashScopeEmbedding from llama_index.core import StorageContext # pip install chromadb # pip install llama-index-vector-stores-chroma import chromadb from llama_index.vector_stores.chroma import ChromaVectorStore # 1、分块 - chunk_size每块的token数 text_splitter TokenTextSplitter(chunk_size200, chunk_overlap5) # 2、向量化模型使用千问的模型 dashscope_embed_model DashScopeEmbedding( model_nametext-embedding-v2, api_keysk-...) # 向量化存储默认使用基于内存的SimpleVectorStore类 # 初始化客户端设置保存数据的路径 db chromadb.PersistentClient(path./chroma_db) # 3、创建向量存储上下文 chroma_collection db.get_or_create_collection(quickstart) vector_store ChromaVectorStore(chroma_collectionchroma_collection) storage_context StorageContext.from_defaults(vector_storevector_store) # 4、创建index index VectorStoreIndex.from_documents( documentsdocuments, transformations[text_splitter], embed_modeldashscope_embed_model, insert_batch_size5, # 限制每次插入的节点数量 storage_contextstorage_context, )示例包括4部分下面序号对应代码注释序号1、首先定义了分块逻辑示例使用Token计数的分块方式默认是按完整句子拆分的SentenceSplitter类它们都属于NodeParser的子类用于将Document拆分成NodeNode表示Document的一个分块“chunk”可以是文本或图片等在LlamaIndex中不管是分块XxxSplitter类、提取元数据XxxExtractor类示例未体现、向量化Node数据XxxEmbedding类它们都属于transformations在解析Document时可以指定多个transformations是一个列表。2、定义向量化模型为千问的text-embedding-v2LlamaIndex默认使用的OpenAI的text-embedding-ada-002模型这和框架的起源有关一开始就是为了解决OpenAI系列模型相关问题。3、创建向量化存储库示例使用的是开源向量库chroma指定存储目录和集合名。4、定义Index由Document组成的数据结构并指定文档Documents、转换列表transformations、向量化模型及每批次数量、向量化存储库。VectorStoreIndex是LlamaIndex中最常见的索引类型通过将Document拆分成Node然后进行向量化每个Node为后续语义检索做准备。示例代码中定义的所有组件在LlamaIndex中都有默认的实现我们可以通过Settings查询同时也可以通过Settings进行设置默认值如下所示from llama_index.core import Settings import os # 随便设置值不然会报错找不到apiKey os.environ[OPENAI_API_KEY] sk-... # 默认使用OpenAI的text-embedding-ada-002模型 print(fSettings.embed_model :{Settings.embed_model}) # 默认使用的SentenceSplitter这三个取得都是相同的默认node_parser print(fSettings.transformations :{Settings.transformations}) print(fSettings.text_splitter :{Settings.text_splitter}) print(fSettings.node_parser :{Settings.node_parser}) # global可以通过这种方式设置 # Settings.text_splitter text_splitter上面我们已经把数据进行了向量化存储如果想要基于存储的向量数据构建Index索引可以使用如下方式不用再次经过一遍上面的流程处理数据了# 从向量库中创建index指定向量库和模型 index VectorStoreIndex.from_vector_store( vector_storevector_store, embed_modeldashscope_embed_model, )1、有关Document和Node介绍https://developers.llamaindex.ai/python/framework/module_guides/loading/documents_and_nodes/类定义见llama_index.core.schema2、chroma开源向量库https://github.com/chroma-core/chroma3、Index不同的索引类型和检索介绍https://developers.llamaindex.ai/python/framework/module_guides/indexing/index_guide/#vector-store-index检索查询有了数据也进行了向量化存储并得到了Index索引对象现在就可以进行检索并加入大模型上下文回答问题。LlamaIndex的检索查询包括三步骤检索Node - 后置处理过滤Node - 响应合成1、仅检索# 上文得到的index索引对象 retriever index.as_retriever() nodes retriever.retrieve(育儿方式) print(flen:{len(nodes)} nodes:{nodes[0].text}) # 另一种方式直接定义VectorIndexRetriever指定index retriever VectorIndexRetriever( indexindex, similarity_top_k1, # 召回一条数据 ) nodes retriever.retrieve(育儿方式) print(flen:{len(nodes)} nodes:{nodes[0].text})示例使用index的as_retriever()方法得到VectorIndexRetriever然后调用retrieve方法来检索node列表。直接定义VectorIndexRetriever效果一样。2、后置处理过滤Node# 导入postprocessor from llama_index.core.postprocessor import KeywordNodePostprocessor, SimilarityPostprocessor node_postprocessors[ # 相似性 SimilarityPostprocessor( similarity_cutoff0.1 ) ] query index.as_query_engine(llmllm, node_postprocessorsnode_postprocessors)示例使用了相似性分数过滤Node过滤后把更少的Node信息作为上下文传递给大模型减少大模型的Token数量以及降低响应时间。更多后置处理器见下面地址。3、响应合成-检索后发起大模型对话# 查询 from llama_index.llms.deepseek import DeepSeek llm DeepSeek(modeldeepseek-chat, api_keysk-...) from llama_index.core.response_synthesizers import ResponseMode from llama_index.core import get_response_synthesizer # 定义响应合成逻辑默认是ResponseMode.COMPACT # compact: 合并Node作为上下文如果超长则使用refine提炼减少模型的请求次数最终借助生成一个答案 response_synthesizer get_response_synthesizer( response_modeResponseMode.COMPACT ) query index.as_query_engine(llmllm, response_synthesizerresponse_synthesizer) print(query.query(育儿方式?))示例通过使用index的as_query_engine()方法得到query引擎并指定响应合成模式“compact”这个也是默认模式含义见上代码注释最后调用query方法借助LLM生成答案。as_query_engine会获取无状态的查询引擎另有as_chat_engine支持多轮对话的有状态查询引擎。compact是其中一种合成模式让ChatGPT基于官方文档生成的不同模式的对照表供参考为什么会有不同的响应合成模式呢是因为 RAG 里拿到的文档往往是多个 chunk而 LLM 的 prompt 有长度限制。所以 LlamaIndex 提供了多种“怎样合成答案”的策略。不同的后置过滤器https://developers.llamaindex.ai/python/framework/module_guides/querying/node_postprocessors/node_postprocessors/不同响应合成模式https://developers.llamaindex.ai/python/framework/module_guides/querying/response_synthesizers/及对应代码类型定义llama_index.core.response_synthesizers.type.ResponseMode04 总结从整体来看LlamaIndex 已经构建出一个覆盖数据接入 → 文本解析 → 向量化与存储 → 检索策略 → 响应生成的完整 RAG 技术栈提供了高度模块化、可自由组合的能力。本文展示的示例仅是 LlamaIndex 功能体系中的一小部分。更多丰富的索引类型、检索模式、数据连接器以及企业级场景的模板与实践可以在官方文档或 LlamaHub 中学习和阅读。值得一提的是除了 RAG 相关组件外LlamaIndex 还提供了 基于事件驱动的 Workflow 工作流 与 Agent 智能体 能力能够进一步支持复杂任务编排、多模型协作等更高级的应用模式。这些在后续文章中逐一展开。想入门 AI 大模型却找不到清晰方向备考大厂 AI 岗还在四处搜集零散资料别再浪费时间啦2025 年AI 大模型全套学习资料已整理完毕从学习路线到面试真题从工具教程到行业报告一站式覆盖你的所有需求现在全部免费分享扫码免费领取全部内容一、学习必备100本大模型电子书26 份行业报告 600 套技术PPT帮你看透 AI 趋势想了解大模型的行业动态、商业落地案例大模型电子书这份资料帮你站在 “行业高度” 学 AI1. 100本大模型方向电子书2. 26 份行业研究报告覆盖多领域实践与趋势报告包含阿里、DeepSeek 等权威机构发布的核心内容涵盖职业趋势《AI 职业趋势报告》《中国 AI 人才粮仓模型解析》商业落地《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》领域细分《AGI 在金融领域的应用报告》《AI GC 实践案例集》行业监测《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。3. 600套技术大会 PPT听行业大咖讲实战PPT 整理自 2024-2025 年热门技术大会包含百度、腾讯、字节等企业的一线实践安全方向《端侧大模型的安全建设》《大模型驱动安全升级腾讯代码安全实践》产品与创新《大模型产品如何创新与创收》《AI 时代的新范式构建 AI 产品》多模态与 Agent《Step-Video 开源模型视频生成进展》《Agentic RAG 的现在与未来》工程落地《从原型到生产AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。二、求职必看大厂 AI 岗面试 “弹药库”300 真题 107 道面经直接抱走想冲字节、腾讯、阿里、蔚来等大厂 AI 岗这份面试资料帮你提前 “押题”拒绝临场慌1. 107 道大厂面经覆盖 Prompt、RAG、大模型应用工程师等热门岗位面经整理自 2021-2025 年真实面试场景包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题每道题都附带思路解析2. 102 道 AI 大模型真题直击大模型核心考点针对大模型专属考题从概念到实践全面覆盖帮你理清底层逻辑3. 97 道 LLMs 真题聚焦大型语言模型高频问题专门拆解 LLMs 的核心痛点与解决方案比如让很多人头疼的 “复读机问题”三、路线必明 AI 大模型学习路线图1 张图理清核心内容刚接触 AI 大模型不知道该从哪学起这份「AI大模型 学习路线图」直接帮你划重点不用再盲目摸索路线图涵盖 5 大核心板块从基础到进阶层层递进一步步带你从入门到进阶从理论到实战。L1阶段:启航篇丨极速破界AI新时代L1阶段了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理、关键技术以及大模型应用场景。L2阶段攻坚篇丨RAG开发实战工坊L2阶段AI大模型RAG应用开发工程主要学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3阶段跃迁篇丨Agent智能体架构设计L3阶段大模型Agent应用架构进阶实现主要学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造Agent智能体。L4阶段精进篇丨模型微调与私有化部署L4阶段大模型的微调和私有化部署更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。L5阶段专题集丨特训篇 【录播课】四、资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容2025 年想抓住 AI 大模型的风口别犹豫这份免费资料就是你的 “起跑线”