使用llama_index 来实现一个RAG

环境

  • uv
  • ollama

RAG 的二个阶段

索引阶段 (Indexing Phase)

检索信息增强,让大模型参考本地的信息/文档,提高回答的质量

  • 加载数据 Indexing
  • 文档加载,分割,将加载的 文本 解析成一系列 Nodes
  • 生成 对每个node ,生成向量嵌入 然后存储在数据索引中

查询阶段 (Querying Phase)

  • 查询嵌入,根据用户的查询生成一个向量嵌入
  • 检索上下文. 利用检索器 进行相似度查询,找的相关的Nodes
  • 预处理,对Nodes列表转换,过滤
  • 合成响应
快速开始一个chat
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.ollama import Ollama
agent=FunctionAgent(
    llm=Ollama(model="gemma3:12b"),
    system_prompt="你是由在水一方公司创建的人工智能机器人"
)
async def chat(str):
    res = await agent.run(str)

llama_index 相关组件

llama_index 通过组件化的方式,将大语言模型,向量数据库,索引,数据源等进行组合。

  • 提示词组件 RichPromptTemplate ChatPromptTemplate MessageRole
from llama_index.core import ChatPromptTemplate
from llama_index.core.llms import ChatMessage,MessageRole
from llama_index.core.prompts import RichPromptTemplate
  • Loading 文档加载组件 把文件加载为Document , 然后拆分为Nodes
  • 文档索引
  • 存储
  • Setting 全局配置

RAG 模式

  • 本地知识库+模型 ,内存向量索引每次重建,实时构建
  • 持久化RAG 磁盘持久化向量库 多次复用
posted @ 2026-01-18 22:13  MyKai  阅读(0)  评论(0)    收藏  举报