Home
Login

LightRAG es un marco de generación aumentada por recuperación simple y rápido que admite múltiples modos de consulta y la construcción de gráficos de conocimiento.

MITPython 17.7kHKUDS Last Updated: 2025-06-19

LightRAG - Marco de Generación Aumentada por Recuperación Simple y Rápida

Resumen del Proyecto

LightRAG es un marco de "Generación Aumentada por Recuperación Simple y Rápida" desarrollado por la Facultad de Ciencias de Datos de la Universidad de Hong Kong (HKUDS). Este proyecto tiene como objetivo proporcionar a los desarrolladores un conjunto completo de soluciones RAG (Retrieval-Augmented Generation), que admite la indexación de documentos, la construcción de grafos de conocimiento y las funciones de preguntas y respuestas inteligentes.

Características Principales

🔍 Múltiples Modos de Recuperación

LightRAG admite cinco modos de recuperación diferentes para satisfacer las necesidades de diferentes escenarios:

  • modo naive: Búsqueda básica, sin utilizar técnicas avanzadas.
  • modo local: Se centra en la recuperación de información relevante al contexto.
  • modo global: Utiliza el conocimiento global para la recuperación.
  • modo hybrid: Combina métodos de recuperación local y global.
  • modo mix: Integra grafos de conocimiento y recuperación vectorial, proporcionando la respuesta más completa.

🎯 Construcción de Grafos de Conocimiento

  • Extrae automáticamente entidades y relaciones de los documentos.
  • Admite la visualización del grafo de conocimiento.
  • Proporciona funciones CRUD (Crear, Leer, Actualizar, Eliminar) para entidades y relaciones.
  • Admite la fusión y deduplicación de entidades.

🚀 Soporte Flexible de Modelos

  • Modelos OpenAI: Admite modelos de la serie OpenAI como GPT-4.
  • Modelos Hugging Face: Admite modelos de código abierto implementados localmente.
  • Modelos Ollama: Admite modelos cuantificados que se ejecutan localmente.
  • Integración con LlamaIndex: Admite más proveedores de modelos a través de LlamaIndex.

📊 Diversos Backends de Almacenamiento

  • Bases de datos vectoriales: Admite Faiss, PGVector, etc.
  • Bases de datos de grafos: Admite Neo4j, PostgreSQL+Apache AGE.
  • Almacenamiento predeterminado: Almacenamiento de grafos NetworkX incorporado.

Instalación

Instalación desde PyPI

pip install "lightrag-hku[api]"

Instalación desde el código fuente

# Crear un entorno virtual de Python (si es necesario)
# Instalar en modo editable, incluyendo soporte para API
pip install -e ".[api]"

Ejemplo de Uso Básico

Inicialización y Consulta

import os
import asyncio
from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import gpt_4o_mini_complete, openai_embed
from lightrag.kg.shared_storage import initialize_pipeline_status
from lightrag.utils import setup_logger

setup_logger("lightrag", level="INFO")

async def initialize_rag():
    rag = LightRAG(
        working_dir="your/path",
        embedding_func=openai_embed,
        llm_model_func=gpt_4o_mini_complete
    )
    await rag.initialize_storages()
    await initialize_pipeline_status()
    return rag

def main():

    rag = asyncio.run(initialize_rag())
    

    rag.insert("Your text")
    

    result = rag.query(
        "What are the top themes in this story?",
        param=QueryParam(mode="mix")
    )
    print(result)

if __name__ == "__main__":
    main()

Funciones Avanzadas

Soporte para el Historial de Conversaciones

# Crear historial de conversación
conversation_history = [
    {"role": "user", "content": "What is the main character's attitude towards Christmas?"},
    {"role": "assistant", "content": "At the beginning of the story, Ebenezer Scrooge has a very negative attitude towards Christmas..."},
    {"role": "user", "content": "How does his attitude change?"}
]

# Crear parámetros de consulta con el historial de conversación
query_param = QueryParam(
    mode="mix",  # or any other mode: "local", "global", "hybrid"
    conversation_history=conversation_history,  # Add the conversation history
    history_turns=3  # Number of recent conversation turns to consider
)

# Realizar una consulta que tenga en cuenta el historial de conversación
response = rag.query(
    "What causes this change in his character?",
    param=query_param
)

Gestión del Grafo de Conocimiento

# Crear nueva entidad
entity = rag.create_entity("Google", {
    "description": "Google is a multinational technology company specializing in internet-related services and products.",
    "entity_type": "company"
})

# Crear otra entidad
product = rag.create_entity("Gmail", {
    "description": "Gmail is an email service developed by Google.",
    "entity_type": "product"
})

# Crear relación entre entidades
relation = rag.create_relation("Google", "Gmail", {
    "description": "Google develops and operates Gmail.",
    "keywords": "develops operates service",
    "weight": 2.0
})

LightRAG Server

Funcionalidad de la Interfaz Web

LightRAG Server proporciona una interfaz web completa que incluye:

  • Gestión de la indexación de documentos
  • Visualización del grafo de conocimiento
  • Interfaz de consulta RAG simple
  • Soporte para diseño de fuerza, consulta de nodos, filtrado de subgrafos, etc.

Interfaz API

  • Proporciona una interfaz API RESTful
  • Compatible con el formato de API de Ollama
  • Admite la integración de chatbots de IA (como Open WebUI)

Parámetros de Configuración

Parámetros Principales

  • working_dir: Ruta del directorio de trabajo
  • embedding_func: Función de incrustación
  • llm_model_func: Función del modelo de lenguaje grande
  • vector_storage: Tipo de almacenamiento vectorial
  • graph_storage: Tipo de almacenamiento de grafos

Parámetros de Optimización del Rendimiento

  • embedding_batch_size: Tamaño del lote de incrustación (predeterminado: 32)
  • embedding_func_max_async: Número máximo de procesos de incrustación asíncronos concurrentes (predeterminado: 16)
  • llm_model_max_async: Número máximo de procesos LLM concurrentes (predeterminado: 4)
  • enable_llm_cache: Indica si se debe habilitar la caché LLM (predeterminado: True)

Exportación y Copia de Seguridad de Datos

Admite la exportación de datos en varios formatos:

#Export data in CSV format
rag.export_data("graph_data.csv", file_format="csv")

# Export data in Excel sheet
rag.export_data("graph_data.xlsx", file_format="excel")

# Export data in markdown format
rag.export_data("graph_data.md", file_format="md")

# Export data in Text
rag.export_data("graph_data.txt", file_format="txt")

Seguimiento del Uso de Tokens

Herramienta de monitoreo del consumo de tokens incorporada:

from lightrag.utils import TokenTracker

# Create TokenTracker instance
token_tracker = TokenTracker()

# Method 1: Using context manager (Recommended)
# Suitable for scenarios requiring automatic token usage tracking
with token_tracker:
    result1 = await llm_model_func("your question 1")
    result2 = await llm_model_func("your question 2")

# Method 2: Manually adding token usage records
# Suitable for scenarios requiring more granular control over token statistics
token_tracker.reset()

rag.insert()

rag.query("your question 1", param=QueryParam(mode="naive"))
rag.query("your question 2", param=QueryParam(mode="mix"))

# Display total token usage (including insert and query operations)
print("Token usage:", token_tracker.get_usage())

Escenarios de Aplicación

Gestión del Conocimiento Empresarial

  • Recuperación y preguntas y respuestas de documentos internos
  • Construcción y mantenimiento de bases de conocimiento
  • Asistente inteligente para documentación técnica

Investigación Académica

  • Recuperación y análisis de literatura
  • Investigación sobre la construcción de grafos de conocimiento
  • Evaluación del rendimiento del sistema RAG

Creación de Contenido

  • Asistencia para la escritura y recuperación de materiales
  • Integración de contenido de múltiples documentos
  • Recomendación de contenido inteligente

Ventajas del Proyecto

  1. Fácil de integrar: Proporciona API de Python y API REST simples.
  2. Altamente personalizable: Admite múltiples modelos y backends de almacenamiento.
  3. Optimización del rendimiento: Admite procesamiento por lotes y procesamiento asíncrono.
  4. Visualización: Funcionalidad de visualización de grafos de conocimiento incorporada.
  5. Nivel empresarial: Admite bases de datos de nivel empresarial como PostgreSQL.

Resumen

LightRAG es un marco RAG completo y fácil de usar, especialmente adecuado para escenarios que requieren la construcción de sistemas de preguntas y respuestas inteligentes y plataformas de gestión del conocimiento. Su diseño de arquitectura flexible y sus ricas características funcionales lo convierten en una excelente solución de código abierto en el campo RAG.