Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

API RAG

Configurez l'API de génération augmentée par récupération (RAG) pour l'indexation et la récupération de documents à l'aide de Langchain et FastAPI. Cette API s'intègre à LibreChat pour fournir des réponses contextuelles basées sur les fichiers téléchargés par les utilisateurs.

L'API RAG indexe les fichiers téléchargés par les utilisateurs et récupère les passages pertinents pour enrichir vos prompts, offrant ainsi à LibreChat des réponses contextuelles basées sur vos documents. Elle fonctionne en tant que service FastAPI distinct, soutenu par une base de données PostgreSQL + pgvector.

Nouveau dans le RAG ?

La présentation de l'API RAG explique le concept plus en détail et renvoie vers une vidéo utile. Cette page couvre l'installation et la configuration.

Disponibilité

Le RAG fonctionne avec les Agents, ainsi qu'avec les Custom Endpoints, OpenAI, Azure OpenAI, Anthropic et Google.

Les Assistants OpenAI disposent de leur propre implémentation RAG via la fonctionnalité « Retrieval » (détails ici). L'utilisation de l'API RAG avec l'API Assistants reste intéressante, étant donné qu'OpenAI facture à la fois le stockage des fichiers et le Retrieval. Cette intégration est prévue pour une future mise à jour.

Démarrage rapide avec Docker

Pour Docker, l'API RAG est déjà configurée dans les fichiers docker-compose.yml et deploy-compose.yml par défaut, incluant la valeur RAG_API_URL. Vous devez simplement vous assurer d'utiliser la dernière image et les derniers fichiers compose. Consultez le guide de mise à jour de LibreChat pour Docker si vous n'êtes pas sûr de la procédure de mise à jour.

Fichier .env partagé

Avec la configuration Docker par défaut, le fichier .env est partagé entre LibreChat et l'API RAG. Définissez les variables RAG dans ce même fichier. La liste complète se trouve dans le RAG API README.

Choisissez le fournisseur d'embeddings que vous souhaitez utiliser.

Utilisez RAG avec les embeddings OpenAI. Il s'agit de la configuration par défaut.

Définissez l'URL de l'API RAG. Ajoutez ce qui suit à votre fichier .env :

RAG_API_URL=http://host.docker.internal:8000

Fournissez une clé API OpenAI (si nécessaire). Si votre clé API OpenAI est définie sur user_provided, ajoutez une clé pour les embeddings. Ignorez cette étape si vous fournissez déjà la clé OpenAI dans votre fichier .env.

RAG_OPENAI_API_KEY=sk-your-openai-api-key-example

Démarrez les conteneurs.

docker compose up -d

Lite vs. full image

Docker utilise par défaut l'image « lite » de l'API RAG (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest), qui ne prend en charge que les embeddings distants provenant d'OpenAI ou d'un service HuggingFace/Ollama distant que vous avez configuré.

Pour les embeddings locaux, remplacez l'image dans le fichier compose par la version complète, registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest. Effectuez ce changement dans votre Fichier de remplacement Docker Compose. Consultez docker-compose.override.yml.example à la racine du projet pour un exemple.

Si vous souhaitez un fichier compose qui inclut uniquement la base de données PostgreSQL + pgvector et l'API Python, consultez rag.yml à la racine du projet.

Stockage de base de données

Les fichiers compose par défaut stockent les données pgvector/PostgreSQL dans le volume pgdata2 géré par Docker. C'est intentionnel : les fichiers de la base de données n'ont pas besoin d'être modifiés directement depuis l'hôte, et un volume géré évite les problèmes courants de propriété et de permissions. Les fichiers modifiables par l'utilisateur (téléversements, journaux, images, données MongoDB et configuration NGINX) sont montés via des bind-mounts dans les dossiers du projet où un accès direct depuis l'hôte est utile.

Configuration locale

Une installation sans conteneur demande plus d'implication manuelle. Suivez les instructions dans le RAG API repo.

Définissez RAG_API_URL dans votre fichier .env de LibreChat à l'adresse où l'API est accessible depuis votre configuration. Cela diffère de Docker, où la valeur est déjà définie dans le fichier docker-compose.yml par défaut.

Configuration

Définissez les options de l'API RAG via des variables d'environnement dans un fichier .env accessible à l'API. La plupart sont facultatives, à l'exception des identifiants et des chemins requis par le fournisseur que vous avez choisi. Dans la configuration par défaut, seule RAG_OPENAI_API_KEY est requise.

Variables d'environnement

KeyTypeDescriptionExample
RAG_API_URLstringURL du service API RAG.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringClé API OpenAI pour les embeddings. Remplace OPENAI_API_KEY pour le RAG.# RAG_OPENAI_API_KEY=sk-your-key
RAG_OPENAI_BASEURLstringURL de base OpenAI personnalisée pour les embeddings RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanRécupérer le contexte complet du fichier au lieu des 4 meilleurs résultats. Par défaut : false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringFournisseur d'embeddings : openai, azure, huggingface, huggingfacetei, ou ollama. Par défaut : openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModèle d'embeddings à utiliser. La valeur par défaut dépend du fournisseur.# EMBEDDINGS_MODEL=text-embedding-3-small
RAG_PORTnumberPort sur lequel l'API RAG s'exécute. Par défaut : 8000.# RAG_PORT=8000
RAG_HOSTstringNom d'hôte pour l'API RAG. Par défaut : 0.0.0.0.# RAG_HOST=0.0.0.0
COLLECTION_NAMEstringNom de la collection du magasin de vecteurs. Par défaut : testcollection.# COLLECTION_NAME=testcollection
CHUNK_SIZEnumberTaille des segments de texte. Par défaut : 1500.# CHUNK_SIZE=1500
CHUNK_OVERLAPnumberChevauchement entre les segments. Par défaut : 100.# CHUNK_OVERLAP=100
OLLAMA_BASE_URLstringURL de base d'Ollama lors de l'utilisation des embeddings Ollama.# OLLAMA_BASE_URL=http://host.docker.internal:11434

Priorité des identifiants

OPENAI_API_KEY fonctionne pour les embeddings RAG, mais RAG_OPENAI_API_KEY le remplace pour éviter les conflits d'identifiants.

Pour la liste complète des variables et leurs descriptions, consultez le dépôt RAG API.

Utilisation

Une fois l'API RAG en cours d'exécution, elle s'intègre automatiquement à LibreChat. Lorsqu'un utilisateur télécharge des fichiers dans une conversation, l'API les indexe et les utilise pour des réponses tenant compte du contexte.

Téléversez des fichiers dans la conversation. Si RAG_API_URL n'est pas configuré ou n'est pas accessible, le téléversement échoue.

Chattez comme d'habitude. Au fur et à mesure que l'utilisateur interagit avec le modèle, l'API RAG récupère les passages pertinents des fichiers indexés en fonction de l'entrée et les utilise pour augmenter le prompt.

Contrôlez quand les fichiers sont interrogés. Par défaut, le magasin de vecteurs est interrogé à chaque nouveau message dans une conversation à laquelle un fichier est joint. Rédigez vos prompts en conséquence.

Désactivez Resend Files dans les paramètres de conversation pour interroger les fichiers uniquement lorsqu'ils sont explicitement joints à un message.

Bascule de renvoi de fichiers dans les paramètres de conversation

Réutiliser les fichiers indexés. Téléversez un fichier une seule fois, puis joignez-le à n'importe quel nouveau message ou conversation depuis le panneau latéral.

Attacher des fichiers indexés depuis le panneau latéral

Les fichiers doivent être dans le stockage « Host ». Les fichiers « OpenAI » sont traités différemment et sont exclusifs aux Assistants ; ils ne doivent donc pas avoir été téléchargés alors que l'endpoint Assistants était sélectionné et actif. Affichez et gérez vos fichiers depuis le panneau latéral.

Visualisation et gestion des fichiers depuis le panneau latéral

Dépannage

Si vous rencontrez des problèmes lors de la configuration ou de l'utilisation de l'API RAG :

  • Assurez-vous que toutes les variables d'environnement requises sont correctement définies dans votre fichier .env.
  • Assurez-vous que la base de données vectorielle est configurée et accessible.
  • Vérifiez que la clé API OpenAI ou les autres identifiants de fournisseur sont valides.
  • Vérifiez les journaux de LibreChat et de l'API RAG pour détecter toute erreur ou avertissement.

Si le problème persiste, consultez la documentation de l'API RAG ou demandez à la communauté LibreChat sur GitHub Discussions ou Discord.

Que pensez-vous de ce guide ?