LightRAG est un framework de génération augmentée par récupération simple et rapide, prenant en charge plusieurs modes de requête et la construction de graphes de connaissances.
LightRAG - Cadre de génération augmentée par récupération simple et rapide
Présentation du projet
LightRAG est un cadre de "génération augmentée par récupération simple et rapide", développé par l'École des sciences des données de l'Université de Hong Kong (HKUDS). Ce projet vise à fournir aux développeurs une solution RAG (Retrieval-Augmented Generation) complète, prenant en charge l'indexation de documents, la construction de graphes de connaissances et les fonctionnalités de questions-réponses intelligentes.
Caractéristiques principales
🔍 Modes de récupération variés
LightRAG prend en charge cinq modes de récupération différents, répondant aux besoins de différents scénarios :
- mode naïf : Recherche de base, sans utiliser de techniques avancées
- mode local : Se concentre sur la récupération d'informations contextuelles pertinentes
- mode global : Utilise les connaissances globales pour la récupération
- mode hybride : Combine les méthodes de récupération locale et globale
- mode mix : Intègre le graphe de connaissances et la recherche vectorielle, offrant la réponse la plus complète
🎯 Construction de graphe de connaissances
- Extraction automatique des entités et des relations à partir des documents
- Prise en charge de la visualisation du graphe de connaissances
- Fournit des fonctions CRUD (création, lecture, mise à jour, suppression) pour les entités et les relations
- Prise en charge de la fusion et de la déduplication des entités
🚀 Prise en charge flexible des modèles
- Modèles OpenAI : Prend en charge les modèles de la série OpenAI tels que GPT-4
- Modèles Hugging Face : Prend en charge les modèles open source déployés localement
- Modèles Ollama : Prend en charge les modèles quantifiés exécutés localement
- Intégration LlamaIndex : Prend en charge davantage de fournisseurs de modèles via LlamaIndex
📊 Divers backends de stockage
- Bases de données vectorielles : Prend en charge Faiss, PGVector, etc.
- Bases de données de graphes : Prend en charge Neo4j, PostgreSQL+Apache AGE
- Stockage par défaut : Stockage de graphes NetworkX intégré
Installation
Installation depuis PyPI
pip install "lightrag-hku[api]"
Installation depuis le code source
# Créer un environnement virtuel Python (si nécessaire)
# Installer en mode éditable, incluant le support API
pip install -e ".[api]"
Exemple d'utilisation de base
Initialisation et requête
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()
Fonctionnalités avancées
Prise en charge de l'historique des conversations
# Créer un historique de conversation
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?"}
]
# Créer des paramètres de requête avec l'historique de conversation
query_param = QueryParam(
mode="mix", # or any other mode: "local", "global", "hybrid"
conversation_history=conversation_history, # Ajouter l'historique de conversation
history_turns=3 # Nombre de tours de conversation récents à prendre en compte
)
# Effectuer une requête qui prend en compte l'historique de conversation
response = rag.query(
"What causes this change in his character?",
param=query_param
)
Gestion du graphe de connaissances
# Créer une nouvelle entité
entity = rag.create_entity("Google", {
"description": "Google is a multinational technology company specializing in internet-related services and products.",
"entity_type": "company"
})
# Créer une autre entité
product = rag.create_entity("Gmail", {
"description": "Gmail is an email service developed by Google.",
"entity_type": "product"
})
# Créer une relation entre les entités
relation = rag.create_relation("Google", "Gmail", {
"description": "Google develops and operates Gmail.",
"keywords": "develops operates service",
"weight": 2.0
})
Serveur LightRAG
Fonctionnalités de l'interface Web
Le serveur LightRAG fournit une interface Web complète, comprenant :
- Gestion de l'indexation des documents
- Visualisation du graphe de connaissances
- Interface de requête RAG simple
- Prise en charge de la disposition de force, de la requête de nœuds, du filtrage de sous-graphes, etc.
Interface API
- Fournit une interface API RESTful
- Compatible avec le format API Ollama
- Prend en charge l'intégration de chatbots IA (tels que Open WebUI)
Paramètres de configuration
Paramètres principaux
working_dir
: Chemin du répertoire de travailembedding_func
: Fonction d'intégrationllm_model_func
: Fonction de modèle de langage étenduvector_storage
: Type de stockage vectorielgraph_storage
: Type de stockage de graphes
Paramètres d'optimisation des performances
embedding_batch_size
: Taille du lot d'intégration (par défaut 32)embedding_func_max_async
: Nombre maximal de processus d'intégration asynchrones simultanés (par défaut 16)llm_model_max_async
: Nombre maximal de processus LLM simultanés (par défaut 4)enable_llm_cache
: Indique si le cache LLM est activé (par défaut True)
Exportation et sauvegarde des données
Prise en charge de l'exportation des données dans plusieurs formats :
#Exporter les données au format CSV
rag.export_data("graph_data.csv", file_format="csv")
# Exporter les données dans une feuille Excel
rag.export_data("graph_data.xlsx", file_format="excel")
# Exporter les données au format Markdown
rag.export_data("graph_data.md", file_format="md")
# Exporter les données en texte
rag.export_data("graph_data.txt", file_format="txt")
Suivi de l'utilisation des tokens
Outil de surveillance de la consommation de tokens intégré :
from lightrag.utils import TokenTracker
# Créer une instance TokenTracker
token_tracker = TokenTracker()
# Méthode 1 : Utilisation du gestionnaire de contexte (recommandé)
# Convient aux scénarios nécessitant un suivi automatique de l'utilisation des tokens
with token_tracker:
result1 = await llm_model_func("your question 1")
result2 = await llm_model_func("your question 2")
# Méthode 2 : Ajout manuel d'enregistrements d'utilisation de tokens
# Convient aux scénarios nécessitant un contrôle plus précis des statistiques de tokens
token_tracker.reset()
rag.insert()
rag.query("your question 1", param=QueryParam(mode="naive"))
rag.query("your question 2", param=QueryParam(mode="mix"))
# Afficher l'utilisation totale des tokens (y compris les opérations d'insertion et de requête)
print("Token usage:", token_tracker.get_usage())
Scénarios d'application
Gestion des connaissances d'entreprise
- Recherche et questions-réponses sur les documents internes
- Construction et maintenance de bases de connaissances
- Assistant intelligent pour la documentation technique
Recherche académique
- Recherche et analyse de la littérature
- Recherche sur la construction de graphes de connaissances
- Évaluation des performances du système RAG
Création de contenu
- Assistance à la rédaction et recherche de matériel
- Intégration de contenu multi-documents
- Recommandation de contenu intelligent
Avantages du projet
- Facile à intégrer : Fournit une API Python simple et une API REST
- Hautement personnalisable : Prend en charge plusieurs modèles et backends de stockage
- Optimisation des performances : Prend en charge le traitement par lots et le traitement asynchrone
- Visualisation : Fonction de visualisation de graphe de connaissances intégrée
- Qualité entreprise : Prend en charge les bases de données de qualité entreprise telles que PostgreSQL
Conclusion
LightRAG est un cadre RAG complet et facile à utiliser, particulièrement adapté aux scénarios nécessitant la construction de systèmes de questions-réponses intelligents et de plateformes de gestion des connaissances. Sa conception d'architecture flexible et ses riches fonctionnalités en font une excellente solution open source dans le domaine RAG.