LlamaIndexs 将大语言模型和外部数据连接在一起的工具。大模型prompt有一个长度限制,当外部知识的内容超过这个长度,无法同时将有效信息传递给大模型,因此就诞生了 LlamaIndex。

具体操作就是通过多轮对话的方式不断提纯外部数据,达到在有限的输入长度限制下,传达更多的信息给大模型。

本文在mac平台验证ollama llamaindex,假设ollama已安装,mac安装ollama安装参考

在mac m1基于ollama运行deepseek r1_m1 mac deepseek-r1-CSDN博客

1 llama-index运行环境搭建

环境向量搭建

conda create -n llama-index python=3.12

conda activte llama-index

pip install llama-index

# chromadb依赖

pip install llama-index-llms-ollama

pip install llama-index-embeddings-ollama

pip install llama_index-vector_stores-chroma

# 开源向量存储

pip install chromadb

ollama embedding模型下载

由于mac本地计算能力有限,所以使用qwen3:1.7b小模型。

ollama pull yxl/m3e

ollama pull qwen3:1.7b

ollama list

2 向量本地化 & 自定义查询

以pdf文件"长安的荔枝- 马伯庸.pdf"为例(可以替换为其他PDF书籍),通过llama_index读取为documents,为减少计算量,取前10个子document。

docs/长安的荔枝- 马伯庸.pdf

documents向量本地目录为./chromadb_v0

rm -rf ./chromadb_v0

mkdir -p ./chromadb_v0

向量集合名称为"llama_index_test"

本地向量化代码如下

import chromadb
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, get_response_synthesizer, Settings
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core.node_parser import SentenceSplitter
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContextSettings.embed_model = OllamaEmbedding(model_name="yxl/m3e:latest")
Settings.llm = Ollama(model="qwen3:1.7b", request_timeout=360)documents = SimpleDirectoryReader("docs").load_data()
documents = documents[:10]
print(f"documents: {len(documents)}")db = chromadb.PersistentClient(path="./chromadb_v0")
chroma_collection = db.get_or_create_collection("llama_index_test")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, transformations=[SentenceSplitter(chunk_size=256)]
)print(index)

然后是自定义查询,prompt=“李善德”


import chromadb
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, get_response_synthesizer, Settings
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.query_engine import RetrieverQueryEngineSettings.embed_model = OllamaEmbedding(model_name="yxl/m3e:latest")  
Settings.llm = Ollama(model="qwen3:1.7b", request_timeout=720)  db = chromadb.PersistentClient(path="./chromadb_v1")
chroma_collection = db.get_or_create_collection("llama_index_test")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)index = VectorStoreIndex.from_vector_store(vector_store, storage_context=storage_context
)retriever = VectorIndexRetriever(index=index,similarity_top_k=5,  # 返回最相似的前 n 个文档片段
)response_synthesizer = get_response_synthesizer()query_engine = RetrieverQueryEngine(retriever=retriever,response_synthesizer=response_synthesizer,    
)response = query_engine.query("李善德")
print(response)  # 输出查询结果

llama_index的回复如下。

<think>
</think>

李善德是《长安的荔枝》一书中的一位重要角色,他因在官场中表现出的忠诚与谨慎,而逐渐被世人所知。他曾在多个衙署任职,包括司农寺和上林署,负责处理各种政务事务。在一次重要的政务活动中,他被圣人指派为荔枝使,负责运输珍贵的荔枝,这一职位对他来说具有极大的意义。他的经历展现了他在官场中的沉稳与担当,也体现了他在复杂的政治环境中所展现出的智慧与忠诚。

可见,llamaindex,借助外部知识库chromadb,和向量检索,找到知识库中最相关内容,然后通过大模型将这些内容提纯为最终答案。

reference

---

ollama - qwen3:1.7b

https://www.ollama.com/library/qwen3:1.7b

Ollama LLM llamaindex

https://docs.llamaindex.ai/en/stable/examples/llm/ollama/

RAG+Agent 实战 llama-index+ollama 本地环境构建rag、agent

https://blog.csdn.net/yierbubu1212/article/details/142718139

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

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

相关文章

数据结构:字符串:大小写转换(changing case of a string)

目录 第一性问题&#xff1a;什么是“大小写”&#xff1f; 逐步构造代码&#xff1a;全部转为大写 我们现在用 第一性原理 的方式&#xff0c;从字符串与字符的本质出发&#xff0c;一步步推导出如何在 C 语言中将字符串中的字母变成全部大写或全部小写。 第一性问题&…

闲庭信步使用图像验证平台加速FPGA的开发:第三十二课——车牌识别的FPGA实现(4)车牌字符的分割定位

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击top_tb.bat文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程…

03_java_运行机制

1. java执行流程2. 什么是编译3. 什么是运行

鸿蒙卡片开发保姆级教程

卡片 1. 卡片概念 什么是卡片&#xff1f;卡片用来显示或者提示一些基本信息或者进行一些基本操作。注意不能做重逻辑&#xff0c;所有重要逻辑全部交给应用如果是元服务如何唤醒&#xff1f;因为元服务不提供桌面应用图标&#xff0c;我们可以通过用户手动的方式在桌面上添加一…

反向传播及优化器

反向传播&#xff08;Backpropagation&#xff09;反向传播是计算梯度的算法&#xff0c;核心作用是高效求解 “损失函数对模型所有参数的偏导数”&#xff08;即梯度&#xff09;。没有反向传播&#xff0c;深度学习的大规模训练几乎不可能实现。 整个过程像 “从终点回溯到起…

【机器学习深度学习】生成式模型的评估与验证

目录 前言 1. 主观评估&#xff1a;以人为本的质量判断 1.1 什么是主观评估&#xff1f; 1.2 主观评估的核心流程 1.3 主观评估的优缺点 2. 客观评估&#xff1a;量化的性能衡量 2.1 什么是客观评估&#xff1f; 2.2 常见的客观评估指标 文本生成 图像生成 多模态生…

Linux文件——Ext2文件系统(3)_软硬链接

文章目录文件的软硬链接软链接硬链接软硬链接对比软硬链接应用软硬链接注意事项总结文件的软硬链接 本篇文章将重点讲解文件系统中的一个重要的知识点&#xff1a; 即文件的软硬链接。 软链接 对于软链接的讲解&#xff0c;我们先来使用一个指令看看效果&#xff1a;ln -s 被…

Java SE:类与对象的认识

Java中的类与对象&#xff1a;构建程序世界的基石 在Java编程的世界里&#xff0c;类与对象是面向对象编程&#xff08;OOP&#xff09;的核心概念&#xff0c;它们就像构建大厦的砖瓦&#xff0c;支撑起整个程序的结构。理解类与对象&#xff0c;是掌握Java编程的关键一步。 类…

Hexo - 免费搭建个人博客03 - 将个人博客托管到github,个人博客公开给大家访问

导言我的博客&#xff1a;https://q164129345.github.io/ 既然要将个人博客托管到github&#xff0c;首先我们肯定要有一个github账户。另外也需要在电脑上安装另外一个著名的代码管理工具git。 一、创建github仓库二、在Hexo设置部署的内容# Deployment## Docs: https://hexo.…

一次Oracle集群脑裂问题分析处理

问题描述 填写问题的基础信息。 系统名称 数据库集群 IP地址 xxxxxx 操作系统 Linux 数据库 Oracle 11.2.0.4 症状表现 问题的症状表现如下 4月26号晚22点02分左右&#xff0c;HIS集群发生脑裂&#xff0c;十几分钟后&#xff08;22.18&#xff09;一节点集群率先获…

0基础法考随手笔记 02(刑诉法专题04 辩护与代理)

0基础法考随手笔记 02&#xff08;刑诉法专题04 辩护与代理&#xff09; 1.值班律师相关权力义务2. 3. 4.什么是强制医疗 注意&#xff1a;为强制医疗指派的律师&#xff0c;是诉讼代理人&#xff0c;不是辩护人&#xff0c;因为此人不会被追究刑事责任。 “强制医疗” 是刑事诉…

HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析

引言随着音频技术的不断发展&#xff0c;多通道音频处理和多接口兼容性成为现代音频设备的重要需求。本文将介绍一款基于XMOS XU316技术的多通道USB HiFi音频解码器固件——HF86611_VC1/HF86611Q_VC1&#xff0c;这是一款专为多接口HiFi音频应用设计的软件解决方案。产品概述HF…

python---列表(List)

文章目录创建列表基本操作访问元素&#xff08;索引&#xff09;切片操作修改列表常用方法列表推导式多维列表列表是 Python 中最基本、最常用的数据结构之一&#xff0c;它是一个有序的可变集合&#xff0c;可以包含不同类型的元素。创建列表 # 空列表 empty_list [] empty_…

ESP32-S3学习笔记<3>:UART的应用

ESP32-S3学习笔记&#xff1c;3&#xff1e;&#xff1a;UART的应用1. 头文件包含2. UART的配置2.1 uart_num的选择2.2 uart_config的设定2.2.1 baud_rate/波特率设置2.2.2 data_bits/数据位数设置2.2.3 parity/奇偶校验位设置2.2.4 stop_bits/停止位设置2.2.5 flow_ctrl/流控位…

【Vue3】加载高德地图案例

官方API:展示地图-入门教程-地图 JS API 2.0 | 高德地图API 1、获取高德Key 参考&#xff1a;准备-地图 JS API 2.0 | 高德地图API 2、创建工程 npm create vitelatest 3、下载依赖集运行项目 npm install npm i amap/amap-jsapi-loader --save npm run dev 4、编写核心…

【工具】Pycharm隐藏侧边灯泡提示

问题描述 在Pycharm中&#xff0c;每行前面很容易出现一个小灯泡&#xff0c;有时候很影响操作&#xff0c;需要将其取消掉设置方法打开设置 按 CtrlAltS 打开设置对话框或者通过菜单 File → Settings&#xff08;在 macOS 上是 PyCharm → Preferences&#xff09;导航到外观…

XSS相关理解

由于本人对一小部分dom型xss、原型链污染和存储型xss理解不够透彻&#xff0c;因此在本篇文章中原型链污染和存储型xss偏重进行概念理解或简单的代码理解&#xff0c;随后会慢慢补充 文章目录1 XSS概述1.1 什么是XSS&#xff1f;1.2 XSS主要分三种类型2 XSS基础2.1 XSS基础练习…

Odoo:免费开源的金属制品行业ERP管理软件

引言开源智造Odoo数字化解决方案专家团队意识到&#xff0c;在当今全球市场中&#xff0c;将盈利能力和竞争力最大化的机会促使许多金属制品制造商投资于推进业务发展的新技术。金属制品会计软件是企业用来处理他们业务和增加利润的解决方案。某金属制品加工工艺流程图&#xf…

Ubuntu22.04配置GTest测试框架

前言 鸿蒙系统的代码仓库使用GTest作为单元测试的工具。特性开发时&#xff0c;需要写demo以验证开发思路。因此有必要搭建GTest开发环境配合鸿蒙特性开发做开发demo。 我测试环境是wsl2 Ubuntu22.04 LTS。 搭建过程 安装必备C组件 sudo apt install -y unzip g gcc cmake …

学习日志15 python

1 filter() 函数filter(function, iterable)filter函数是python中的高阶函数, 第一个参数是一个筛选函数, 第二个参数是一个可迭代对象, 返回的是一个生成器类型, 可以通过next获取值。filter() 函数是 Python 内置的高阶函数&#xff0c;其主要功能是对可迭代对象中的每个元素…