Skip to content
BotServBotServ
LlamaIndexRAGFramework de agentesÍndices de datosQuery Engine

LlamaIndex: Framework de Agentes Enfocado en RAG

LlamaIndex para agentes de IA. Framework RAG, índices de datos, query engines y ejemplos prácticos.

S

schutzgeist

5 min read
LlamaIndex: Framework de Agentes Enfocado en RAG

LlamaIndex: Framework para agentes enfocados en RAG

Qué cubre este artículo

  • Qué es LlamaIndex y cómo funciona.
  • Cómo construir agentes con LlamaIndex y RAG.
  • Índices de datos, motores de consulta y herramientas para agentes.
  • Ejemplos prácticos para preguntas sobre documentos y bases de conocimiento.
  • Mejores prácticas para calidad y rendimiento en RAG.

Introducción: LlamaIndex explicado

LlamaIndex es un framework para agentes basados en RAG. Conecta LLMs con índices de datos (bases de datos vectoriales), motores de consulta (búsqueda) y herramientas (acciones). Ideal para agentes que acceden a documentos y bases de conocimiento.

Este artículo está dirigido a desarrolladores que quieren construir agentes RAG con LlamaIndex. Encontrarás conceptos fundamentales en RAG local y Frameworks para agentes de IA.

Por qué necesito LlamaIndex

Imagina que estás construyendo un agente que responde preguntas sobre tus documentos. LangChain es genérico, LlamaIndex es especializado: ofrece índices listos para usar, motores de consulta y herramientas de recuperación para RAG. Para agentes basados en documentos, es la mejor opción.

LlamaIndex en resumen

LlamaIndex es un framework enfocado en RAG. Índices de datos para documentos, motores de consulta para búsqueda, herramientas para agentes. Para agentes basados en documentos y bases de conocimiento.

La idea central es: RAG primero para agentes basados en documentos.

Para quién es este artículo

  • Desarrolladores de RAG que construyen agentes basados en documentos.
  • Gestores de conocimiento que implementan preguntas y respuestas sobre documentos.
  • Desarrolladores que usan LlamaIndex para agentes.
  • Desarrolladores Python que comparan frameworks de RAG.

Conceptos clave

  • LlamaIndex - Framework de RAG. Cuándo es útil: para agentes RAG.
  • RAG - Retrieval-Augmented Generation. Cuándo es útil: el concepto.
  • Base de datos vectorial - Almacenamiento. Cuándo es útil: para índices.
  • Ollama - Servidor de modelos local. Cuándo es útil: para modelos.
  • Motor de consulta - Buscador. Cuándo es útil: para recuperación.

Configuración

pip install llama-index llama-index-llms-ollama llama-index-embeddings-ollama
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding

# Configurar LLM
llm = Ollama(model="llama3.1", base_url="http://ollama:11434")

# Configurar embedding
embed_model = OllamaEmbedding(
    model_name="multilingual-e5",
    base_url="http://ollama:11434"
)

Ejemplo práctico 1: Índice de documentos

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# Cargar documentos
documents = SimpleDirectoryReader("./dokumente").load_data()

# Crear índice
index = VectorStoreIndex.from_documents(
    documents,
    embed_model=embed_model
)

# Motor de consulta
query_engine = index.as_query_engine(llm=llm)

# Formular pregunta
response = query_engine.query("¿Qué dice el contrato sobre la rescisión?")
print(response)

Ejemplo práctico 2: Agente con herramientas

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool

# Definir herramienta
def multiply(a: int, b: int) -> int:
    """Multiplica dos números"""
    return a * b

def get_weather(location: str) -> str:
    """Obtener el clima"""
    return f"Clima en {location}: 22°C"

# Crear herramientas
tools = [
    FunctionTool.from_defaults(fn=multiply),
    FunctionTool.from_defaults(fn=get_weather)
]

# Crear agente
agent = ReActAgent.from_tools(
    tools,
    llm=llm,
    verbose=True
)

# Usar agente
response = agent.chat("¿Cuánto es 123 * 456?")
print(response)

Ejemplo práctico 3: Agente RAG

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool, ToolMetadata

# Motor de consulta como herramienta
query_tool = QueryEngineTool(
    query_engine=query_engine,
    metadata=ToolMetadata(
        name="document_search",
        description="Buscar en documentos"
    )
)

# Agente con herramienta RAG
agent = ReActAgent.from_tools(
    [query_tool],
    llm=llm,
    verbose=True
)

# El agente usa RAG para responder
response = agent.chat("¿Qué dice el documento sobre protección de datos?")
print(response)

Ejemplo práctico 4: Agente con múltiples índices

# Varios índices para diferentes documentos
index_contracts = VectorStoreIndex.from_documents(
    SimpleDirectoryReader("./vertraege").load_data(),
    embed_model=embed_model
)

index_invoices = VectorStoreIndex.from_documents(
    SimpleDirectoryReader("./rechnungen").load_data(),
    embed_model=embed_model
)

# Herramientas para cada índice
contract_tool = QueryEngineTool(
    query_engine=index_contracts.as_query_engine(llm=llm),
    metadata=ToolMetadata(
        name="contract_search",
        description="Buscar en contratos"
    )
)

invoice_tool = QueryEngineTool(
    query_engine=index_invoices.as_query_engine(llm=llm),
    metadata=ToolMetadata(
        name="invoice_search",
        description="Buscar en facturas"
    )
)

# Agente con múltiples herramientas
agent = ReActAgent.from_tools(
    [contract_tool, invoice_tool],
    llm=llm
)

LlamaIndex vs. LangChain

AspectoLlamaIndexLangChain
EnfoqueRAG, documentosGeneral
ÍndicesSí, dedicadosNo, manual
Motor de consultaSí, dedicadoNo, manual
AgentesSí, ReActSí, varios
ComplejidadMás simple para RAGMás complejo, flexible
Mejor paraPreguntas sobre documentosAgentes generales

Notas de seguridad

  • Fuentes de datos: Los índices pueden contener datos sensibles. Implementa control de acceso.
  • Inyección de prompt: Los documentos pueden contener inyecciones. Ver Inyección de prompt.
  • Auditoría: Registra todas las acciones del agente. Ver Audit Logging.
  • Permisos: El agente debe acceder solo a los índices necesarios. Ver Permisos de herramientas.

Errores comunes

  • Demasiados documentos: Los índices grandes pueden ser lentos. Usa chunking y filtrado.
  • Embeddings deficientes: El modelo de embedding incorrecto resulta en búsqueda pobre. Usa multilingual-e5 para alemán.
  • Sin citas de fuentes: El agente debería indicar las fuentes, no solo dar respuestas.
  • Alucinaciones: Sin una buena recuperación, el modelo alucina. Verifica la calidad del RAG.
  • Demasiadas herramientas: Más de 5-7 herramientas sobrecargan el modelo.

Enlaces relacionados

Puntos clave:

  • LlamaIndex es un framework enfocado en RAG para agentes basados en documentos.
  • Índices de datos, motores de consulta y herramientas para agentes.
  • Para preguntas sobre documentos, bases de conocimiento y aplicaciones RAG.
  • Más simple para RAG que LangChain, más especializado.
  • Para agentes generales: usa LangChain o CrewAI.

Preguntas frecuentes

¿Qué es LlamaIndex?

Un framework enfocado en RAG para agentes de IA: índices de datos para documentos, motores de consulta para búsqueda, herramientas para agentes. Para agentes basados en documentos.

¿LlamaIndex o LangChain?

LlamaIndex para RAG y preguntas sobre documentos. LangChain para agentes generales y flujos de trabajo complejos. Ambos pueden combinarse.

¿Qué son los índices de datos?

Estructuras para búsqueda de documentos: VectorStoreIndex para búsqueda semántica, KeywordTableIndex para palabras clave, etc. Habilitan el RAG.

¿Qué es un motor de consulta?

El buscador para el índice: encuentra documentos relevantes, genera contexto y proporciona respuestas con citas de fuentes.

¿Qué modelo de embedding usar?

multilingual-e5 o bge-m3 para documentos alemanes. nomic-embed-text para inglés. Para documentos largos: bge-m3 o gte-Qwen2.

¿Están mis documentos seguros?

Sí, si usas modelos locales e índices locales. Todos los datos permanecen en tu servidor. Con APIs en la nube, los datos se transmiten.

¿Cuánto cuesta LlamaIndex?

Gratis. LlamaIndex es código abierto. Con modelos locales (Ollama): solo costos de hardware. Con APIs en la nube: costos de API.

¿Qué tal el rendimiento de LlamaIndex?

Bueno para volúmenes medios de documentos (miles de documentos). Para volúmenes muy grandes: estrategia de chunking, filtrado y buenos embeddings son importantes.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas