LlamaIndex
LlamaIndex 是一个开源框架,可为 LLM 加载、索引和检索私有数据,为 RAG 流程和文档智能体提供支持。
LlamaIndex 是一个开源框架,用于将大型语言模型(LLM)连接到私有数据:它加载文档、数据库和 API,为其内容建立索引,并检索模型回答问题所需的段落。使用该框架构建的大多数应用都会采用检索增强生成(RAG),例如根据公司手册、合同或工单作答的助手,以及读取并处理文档的 AI 智能体。Jerry Liu 于 2022 年 11 月以 GPT Index 的名称发布该项目,并于 2023 年 2 月将其更名为 LlamaIndex。LlamaIndex 框架支持 Python 和 TypeScript;其公司还运营托管服务 LlamaParse,可将复杂的 PDF、表格和幻灯片转换成便于建立索引的文本。
LlamaIndex 的工作原理#
LlamaIndex 应用分为两个阶段。摄取阶段在每次数据更新时运行一次:LlamaHub 连接器将文件和服务加载为 Document 对象,节点解析器将每个对象拆分成称为 Node 的块,嵌入模型再将每个 Node 转换为向量,也就是其嵌入,并存入索引。查询阶段则对每个问题运行:检索器找到与问题最接近的 Node,后处理器(例如重排器)对它们重新排序或筛选,响应合成器再将保留下来的内容与指令一起放入 LLM 的上下文窗口,要求模型据此作答。
VectorStoreIndex 是默认索引,它会将嵌入存储在内存或外部向量数据库中。其他索引会将每个块发送给模型生成摘要,构建包含实体和关系的知识图谱以支持 GraphRAG风格的查询,或匹配关键词。查询引擎回答单个问题,聊天引擎则保留对话;LlamaIndex 的事件驱动编排层 Workflows 会连接检索、工具和多个智能体,构建能够自行决定搜索内容和时机的智能体 RAG系统。
根据图像内容建立索引#
检索适用于任何可以转写为文本的内容。使用 Ultralytics YOLO26处理一组照片,可以把每张图像转化为可搜索的描述:Results.verbose() 将预测模式结果中各类别的计数返回为简短字符串,并将其作为 Document,其元数据会保留图像 URL。接着,使用本地的 Hugging Face嵌入模型,就能在无需 API 密钥的情况下运行索引:
from llama_index.core import Document, Settings, VectorStoreIndex
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from ultralytics import YOLO
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
model = YOLO("yolo26n.pt")
# Describe each image by its detections; the URL stays in metadata and out of the embedding
docs = []
for url in ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]:
results = model(url)
text = f"A photo containing {results[0].verbose()}"
docs.append(Document(text=text, metadata={"image": url}, excluded_embed_metadata_keys=["image"]))
# Index the descriptions, then retrieve the image that best matches a question
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever(similarity_top_k=1)
nodes = retriever.retrieve("Which photo shows a bus?")
print(nodes[0].node.metadata["image"], round(nodes[0].score, 3))检索器返回了公交车图像及其余弦相似度分数;它是通过检测器的描述找到的,而非通过文件名。再添加响应合成器,就能用文字回答有关这组图像的问题;这正是将计算机视觉与文档搜索结合的多模态 RAG系统所采用的模式。










