LlamaIndex 是一个强大的框架,专门用于构建基于LLM的数据应用。它的主要目标是帮助开发者创建能够与私有数据交互的LLM应用。
LlamaIndex 的核心理念是"上下文增强"(Context Augmentation),主要包括:
pip install llama-index
import os
os.environ["OPENAI_API_KEY"] = "你的OpenAI API密钥"
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档
documents = SimpleDirectoryReader("data").load_data()
# 创建索引
index = VectorStoreIndex.from_documents(documents)
# 创建查询引擎
query_engine = index.as_query_engine()
# 进行查询
response = query_engine.query("你的问题")
print(response)
LlamaIndex 支持多种数据源:
示例:
# 导入PDF文档
from llama_index.core import SimpleDirectoryReader
documents = SimpleDirectoryReader(
input_dir="./data",
filename_as_id=True
).load_data()
LlamaIndex 提供多种索引方式:
示例:
# 创建向量存储索引
from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(documents)
# 保存和加载索引
index.storage_context.persist()
支持多种查询模式:
# 创建查询引擎
query_engine = index.as_query_engine()
# 执行查询
response = query_engine.query("请总结这些文档的主要内容")
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool
# 创建工具
tools = [
QueryEngineTool(
query_engine=query_engine,
name="document_search",
description="搜索文档内容"
)
]
# 创建代理
agent = ReActAgent.from_tools(tools)
# 执行任务
response = agent.chat("分析文档中的关键信息")
# 创建聊天引擎
chat_engine = index.as_chat_engine(
chat_mode="condense_question", # 支持多种对话模式
memory=ChatMemoryBuffer() # 添加对话记忆
)
# 进行对话
response = chat_engine.chat("你好,请介绍一下文档的主要内容")
支持多种向量数据库:
from llama_index.vector_stores import PineconeVectorStore
# 创建向量存储
vector_store = PineconeVectorStore(
index_name="my-index",
environment="us-west1-gcp"
)
# 使用向量存储创建索引
index = VectorStoreIndex.from_documents(
documents,
vector_store=vector_store
)
from llama_index.core.workflow import WorkflowGraph
# 创建工作流图
workflow = WorkflowGraph()
# 添加节点
workflow.add_node("loader", SimpleDirectoryReader("data"))
workflow.add_node("index", VectorStoreIndex)
workflow.add_node("query_engine", "index.as_query_engine()")
# 连接节点
workflow.connect("loader", "index")
workflow.connect("index", "query_engine")
# 运行工作流
results = workflow.run()
from llama_index.multi_modal_llms import OpenAIMultiModal
# 创建多模态LLM
llm = OpenAIMultiModal(model="gpt-4-vision-preview")
# 处理图像
response = llm.complete(
prompt="描述这张图片",
image_paths=["image.jpg"]
)
from llama_index.multi_modal_llms import OpenAIMultiModal
# 处理音频
response = llm.complete(
prompt="转录这段音频",
audio_paths=["audio.mp3"]
)
from llama_index.evaluation import QueryResponseEvaluator
# 创建评估器
evaluator = QueryResponseEvaluator()
# 评估响应
eval_result = evaluator.evaluate(
query="问题",
response="答案",
reference_doc="参考文档"
)
from llama_index.cost_analysis import CostCalculator
# 创建成本计算器
calculator = CostCalculator()
# 计算成本
cost = calculator.calculate_cost(
num_tokens=1000,
model="gpt-4"
)
Q: 如何提高检索准确性? A:
Q: 如何降低API成本? A:
Q: 如何处理长文档? A: