惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
V2EX - 技术
V2EX - 技术
P
Privacy & Cybersecurity Law Blog
T
The Exploit Database - CXSecurity.com
美团技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
S
Securelist
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
Security Latest
Security Latest
L
LINUX DO - 最新话题
NISL@THU
NISL@THU
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
Y
Y Combinator Blog
The Hacker News
The Hacker News
Security Archives - TechRepublic
Security Archives - TechRepublic
IT之家
IT之家
T
Threatpost
Hugging Face - Blog
Hugging Face - Blog
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
小众软件
小众软件
V
Vulnerabilities – Threatpost
J
Java Code Geeks
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
S
Security @ Cisco Blogs
雷峰网
雷峰网
Help Net Security
Help Net Security
The Last Watchdog
The Last Watchdog
Recent Announcements
Recent Announcements
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
T
Troy Hunt's Blog
MyScale Blog
MyScale Blog

博客园 - 漫思

python使用.env构建开发和生产环境 python项目的构建 nodejs构建CICD时的思考  成为 AI 智能体工程师的 10 个步骤 es6的 yield python 中的 yield 笔记本的A壳 thinkpad 更换 reduce() in Python python的字段赋值和取值的操作 python的语法类似于lodash分组展开,合并分组操作 SelectMany C# lodash 数组的常用做法 lodash里面的常用方法 技术的边界 Reduce 和 Transduce 的含义 尤雨溪创办的 VoidZero 官宣加入 Cloudflare,前端 Vite 等保持开源 Ramda 函数库参考教程 ramda es 数组的方法 flatmap map object.entity的教程 Map与FlatMap:在数据处理中的区别与联系 flat、flatmap与map的用法区别1 flat、flatmap与map的用法区别 AI不是从天而降,它经历了七十年三起三落:读懂AI的第三课 Agent 17 种架构模式 分析 & 思考 只有踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!试试它crypto.randomUUID() FastAPI python并发 代码是 AI 写的,生产事故谁背锅? AI Agent 走出 Demo 幻觉的唯一解药:Harness Engineering 高管的 AI 精神病 小米开源可控视频音效生成模型 ControlFoley ​IBM 联合红帽投资 50 亿美元:帮助企业确保开源软件安全 国家大基金领投 DeepSeek,首轮融资投前估值 450 亿美元 SpaceX 自研 AI 训练栈 V1.0 接近完工:用 C 重写、适配 22 万块 GB300 GPU 高管的 AI 精神病 - 漫思 做一款企业真正敢用的AI测试应用,到底有多难?究竟难在哪? - 漫思 工良吐槽篇:万字长文细说 AI 落地之笑谈 koarouter的路由基本能力 7. 简单语句 class-validator class- @koa/router 分路由 这是我见过的最好的koa2 classvalidate typeorm的能力 HLS.js destroy时会取消请求吗 从入门到精通:2025年本体管理工具选型指南,8款工具助你驾驭语义网络 一文入门智能体:dify 超快速构建AI agent C# 15 类型系统改进:Union Types skill网站 应无所住,而生其心 process.stdin.isTTY 谷歌学术走过风雨十年 听创始人畅谈苦辣酸甜 - 漫思 process.stdin.isTTY 是false的具体情况 asyncio 较为复杂的demo asyncio 简单demo python Annotated 独家解读:淘宝使用 Node.js 的 TypeScript 多场景开发和实践 mac uv 使用 Python 包管理工具 uv 使用教程 Python依赖管理新标杆:UV工具安装与实战指南 python的uv lobehubui python的enum通过int进行初始化 python的枚举类型 深度拆解:AI 智能体 Harness 的构造【译】 python和langchain的简单教程 nodejs的顶尖开源项目 基础Pydantic+TypedDict+Annotated +Dataclass 深度解析Python结构化数据工具:dataclass、Pydantic Model与TypedDict 被 LangChain 全家桶搞晕了?LangGraph、LangSmith、LangFlow 一文读懂 - 漫思 谁才是企业级开源平台的优选?OpenCSG与Dify、Coze、Langflow、Ollama 的差异化之路 四大框架全景解析:LangChain、LangGraph、DeepAgent、LangFlow 测试数据管理方式对比:dict vs dataclass vs TypedDict 革命性的写作:MDX 让你的 Markdown 全面动起来 Python - pydantic 入门介绍与 Models 的简单使用 欢迎使用 Pydantic¶ python模块导入 Python 里通常说“数组切片”,大多数时候指的是列表切片。基本格式是: 自定义hook的写法 Python 遍历字典的8种方法 python基础教程 or的简单用法 C# 15 引入了 联合类型 asyncio的基础理论 flask配置热更新 Form.Item 无法直接绑定两个 name Form.Item 的双向翻译官:getValueFromEvent 与 getValueProps Knex.js入门指南:Node.js最强大的SQL查询构建器 knex.js1 Knex.js RFC 9535:JSONPath 的标准化之路 C#多线程Thread.Join()的详解 Pretext:值得关注的文本排版引擎 Flask入门(四):Flask静态文件及配置 【高并发】消息队列思路 为何高并发系统中都要使用消息队列?这次彻底懂了! Node.js 消息队列应用:RabbitMQ、Kafka 与处理高并发任务 大文件上传下载处理方案-断点续传,秒传,分片,合并 Node.js 缓存策略优化:Redis、Memcached 与本地缓存实现 .NET开发者的救星:8个让你告别996的高效库 别再吹牛了,100% Vibe Coding 存在无法自洽的逻辑漏洞!
LlamaIndex是什么?LlamaIndex综述!看这一篇就够了!
漫思 · 2026-05-18 · via 博客园 - 漫思

1、什么是LlamaIndex

本篇将为各位同学介绍一下LlamaIndex, 它是一个强大的开源工具,它能帮助开发者构建各种基于大型语言模型 (LLM) 的应用程序。它提供了一套工具和 API,使开发者能够轻松地将 LLM 与外部数据源连接起来,从而赋予 LLM 更强大的能力,从功能上看它与LangChian有点类似。

1、 初识LlamaIndex

LlamaIndex (前身为 GPT Index) 是一个数据框架,它诞生的目的是帮助开发人员将外部数据轻松桥接到大型语言模型 (LLM) 应用中。它提供了一种结构化的方法来连接 LLM 与各种数据资源,从而使 LLM 能够访问并利用这些数据来完成更复杂的任务,例如它能实现:

  • 增强问答能力:通过连接到外部文档、数据库或 API,LLM 可以提供更准确、更全面的答案,而不仅仅依赖于模型训练数据。
  • 个性化体验:LlamaIndex 可以根据用户的特定数据定制 LLM 的响应,例如根据用户的购买历史推荐产品。
  • 自动化工作流程:LlamaIndex 可以帮助自动化需要访问和处理外部数据的任务,例如生成报告、总结文档或创建聊天机器人。

2、核心功能

LlamaIndex的核心功能包括:

1. 数据连接器: LlamaIndex 提供了各种数据连接器,可以轻松地将 LLM 连接到不同类型的数据源,包括:

  • 文档:PDF、Word、文本文件等。
  • API:RESTful API、GraphQL API 等。
  • 数据库:PostgreSQL、MySQL、MongoDB 等。
  • Notion、Slack、Google Docs 等

2. 数据索引: LlamaIndex 提供了多种索引结构,可以有效地组织和存储外部数据,以便 LLM 可以快速访问和检索相关信息。例如:

  • 列表索引:将数据存储为简单的列表。
  • 向量存储索引:使用向量嵌入将数据存储在向量数据库中,以便进行语义搜索
  • 树索引:将数据组织成树状结构,以便进行分层导航。
  • 关键字表索引:使用关键字来索引数据,以便快速查找特定信息。

3. 查询接口: LlamaIndex 提供了用户友好的查询接口,可以轻松地向 LLM 提出问题并获取答案。它支持各种查询类型,例如:

  • 基于关键字的查询: 查找包含特定关键字的数据。
  • 语义查询:查找与查询语义相似的数据。
  • 基于模板的查询:使用预定义的模板生成查询。

LlamaIndex 是一个强大的数据框架,可以帮助开发人员充分发挥 LLM 的潜力,构建更智能、更强大的应用程序。它提供了一种便捷的方式来连接 LLM 与外部数据,并提供了各种工具和功能来优化数据访问、查询和处理。

如果你对AI大模型感兴趣,在这里我给大家推荐一个非常优质的 AI 大模型资料,由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。入口直接给放下面了,点击卡片链接即可领取⬇️⬇️⬇️

3、框架结构

LlamaIndex 框架的核心结构可以概括为三个主要组成部分:数据连接器(Data Connectors)、索引(Indexes) 和查询接口(Query Interface)。这三个部分协同工作,使得 LLM 能够有效地访问、理解和利用外部数据。

1. 数据连接器(Data Connectors):

  • 作用:数据连接器的主要作用是将各种不同类型的数据源连接到 LlamaIndex 框架中。 它们充当了 LLM 与外部世界之间的桥梁,使得 LLM 能够访问并读取各种数据。
  • 类型:LlamaIndex 提供了丰富的内置数据连接器,支持连接到各种常见的数据源,包括:
  • 文档:PDF、Word、TXT、Markdown 等各种文档格式。
  • API:RESTful API、GraphQL API 等。
  • 数据库:PostgreSQL、MySQL、MongoDB 等关系型和非关系型数据库。
  • 云服务:Google Docs、Notion、Slack、Twitter 等。
  • 可扩展性: 除了内置的连接器之外,LlamaIndex 还允许用户自定义数据连接器,以满足连接到特定数据源的需求。

示例:

    from llama_index import SimpleDirectoryReader      
      # 加载本地文件夹中的所有文档   
       documents = SimpleDirectoryReader('data_directory').load_data()
​

2、 索引(Indexes):

  • 作用:索引是 LlamaIndex 框架的核心组件,负责将连接器获取的数据结构化地组织起来,以便 LLM 能够高效地访问和理解数据。不同的索引结构适用于不同的数据类型和查询场景。
  • 类型:LlamaIndex 提供了多种不同类型的索引,每种索引都有其独特的结构和优势:
  • 列表索引(List Index):将数据存储为一个简单的列表,适用于顺序访问数据,例如逐句读取一篇文章。
  • 向量存储索引(Vector Store Index):使用嵌入模型将数据转换为向量,并存储在向量数据库中,支持语义搜索,能够找到与查询语义相似的文本片段。
  • 树索引(Tree Index):将数据组织成树状结构,适用于处理具有层次关系的数据,例如代码文件或目录结构。
  • 关键字表索引(Keyword Table Index):根据数据的关键字构建索引,适用于快速查找包含特定关键字的信息。
  • 选择合适的索引:选择合适的索引类型取决于数据的特点和应用场景。例如,对于需要进行语义搜索的任务,向量存储索引通常是最佳选择。
  • 示例:
    from llama_index import VectorStoreIndex       
     # 使用向量存储索引构建索引  
       index = VectorStoreIndex.from_documents(documents)
​

3、查询接口(Query Interface):

  • 作用:查询接口为用户提供了一种与 LLM 交互并查询索引中数据的方式。用户可以通过查询接口向 LLM 提出问题,LLM 会利用索引中的数据来生成答案。
  • 灵活性:LlamaIndex 提供了灵活的查询接口,支持多种不同的查询方式,例如:
  • 基于关键字的查询:查找包含特定关键字的数据。
  • 语义查询:查找与查询语义相似的文本片段。
  • 基于模板的查询:使用预定义的模板来生成查询。
  • 自定义查询:用户还可以自定义查询逻辑,以满足特定的应用需求。
  • 示例:
from llama_index import QueryEngine 
   # 创建查询引擎
   query_engine = index.as_query_engine()   
    # 查询索引
    response = query_engine.query("What is the main topic of this document?")
​

我们可以把框架的基本流程总结如下:

  1. 利用 Data Connectors 从不同数据源读取数据。
  2. 利用 Indexes 将数据结构化存储。
  3. 利用 Query Interface 查询数据并获得LLM的回复。

2、 LLamaIndex 入门教程

1、安装 LLamaIndex

pip install llama-index langchain llama-cpp-python chromadb
​

2 、读取文档数据

LLamaIndex 提供 多种数据加载方式,下面以 TXT 文档 为例:

from llama_index.core import SimpleDirectoryReader
# 读取本地文件夹中的所有文档
documents = SimpleDirectoryReader("files/").load_data()
​
print(f"文档数量: {len(documents)}")
print(documents[0].text[:500])  # 预览前 500 个字符
​

LLamaIndex 还支持读取 PDF、Notion、数据库等数据源。

3 、构建索引

打开huggingface官网,搜索embedding模型,然后把embedding模型下载到本地

# 下载nomic-embed-text-v2-moe 到models文件夹
huggingface-cli download nomic-ai/nomic-embed-text-v2-moe --local-dir ./models
​
from llama_index.core import VectorStoreIndex
from llama_index.core import SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
​
# 读取本地文件夹中的所有文档
documents = SimpleDirectoryReader("files/").load_data()
​
# 创建索引
embedding = HuggingFaceEmbedding(model_name='./models', trust_remote_code=True)
index = VectorStoreIndex.from_documents(documents, embed_model=embedding)
​
# 保存索引
index.storage_context.persist("index_storage/")
​

LLamaIndex 会自动 分块、转换向量并存储索引。

4 、查询文档

from langchain.llms import Ollama
from llama_index.core import load_index_from_storage, StorageContext
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
​
# 自定义本地 Embedding 模型
embedding_model = HuggingFaceEmbedding(model_name="./models", trust_remote_code=True)
​
# 加载索引
storage_context = StorageContext.from_defaults(persist_dir="index_storage/")
index = load_index_from_storage(storage_context, embed_model=embedding_model)
​
# 自定义Chat模型
llm = Ollama(  
  model='deepseek-r1:7b',
  )
​
# 创建查询引擎
query_engine = index.as_query_engine(llm=llm)# 进行查询response = query_engine.query("这篇文档的主要内容是什么?")
print(response)
​

这样,我们就可以 用 LlamaIndex 读取 PDF,并进行智能问答 了!

如果你对AI大模型感兴趣,在这里我给大家推荐一个非常优质的 AI 大模型资料,由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。