RAG API
Configureer de Retrieval-Augmented Generation (RAG) API voor documentindexering en -opvraging met behulp van Langchain en FastAPI. Deze API integreert met LibreChat om contextbewuste antwoorden te bieden op basis van door de gebruiker geüploade bestanden.
De RAG API indexeert door gebruikers geüploade bestanden en haalt relevante passages op om uw prompts aan te vullen, waardoor LibreChat contextbewuste antwoorden krijgt die gebaseerd zijn op uw documenten. Het draait als een afzonderlijke FastAPI-service die wordt ondersteund door een PostgreSQL + pgvector database.
Nieuw bij RAG?
De RAG API Presentation legt het concept in meer detail uit en bevat een link naar een handige video. Deze pagina behandelt de installatie en configuratie.
Beschikbaarheid
RAG werkt met Agents, evenals Custom Endpoints, OpenAI, Azure OpenAI, Anthropic en Google.
OpenAI Assistants hebben hun eigen RAG-implementatie via de "Retrieval"-functionaliteit (details hier). Het gebruik van de RAG API met de Assistants API blijft de moeite waard, aangezien OpenAI kosten in rekening brengt voor zowel bestandsopslag als Retrieval. Deze integratie staat gepland voor een toekomstige update.
Docker Quick Start
Voor Docker is de RAG API al geconfigureerd in zowel de standaard docker-compose.yml als de deploy-compose.yml bestanden, inclusief de RAG_API_URL waarde. Je hoeft er alleen voor te zorgen dat je de nieuwste image en compose-bestanden gebruikt. Zie de Updating LibreChat guide for Docker als je niet zeker weet hoe je moet updaten.
Gedeeld .env bestand
Bij de standaard Docker-installatie wordt het .env bestand gedeeld tussen LibreChat en de RAG API. Definieer de RAG-variabelen in datzelfde bestand. De volledige lijst staat in de RAG API README.
Kies de embeddings-provider die je wilt gebruiken.
Gebruik RAG met OpenAI embeddings. Dit is de standaardconfiguratie.
Stel de RAG API URL in. Voeg het volgende toe aan je .env bestand:
RAG_API_URL=http://host.docker.internal:8000Verstrek een OpenAI API-sleutel (indien nodig). Als uw OpenAI API-sleutel is ingesteld op user_provided, voeg dan een sleutel toe voor embeddings. Sla deze stap over als u de OpenAI-sleutel al in uw .env bestand heeft opgegeven.
RAG_OPENAI_API_KEY=sk-your-openai-api-key-exampleStart de containers.
docker compose up -dGebruik RAG met Hugging Face embeddings.
Configureer de provider. Voeg het volgende toe aan je .env bestand:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=huggingface
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxSchakel over naar de volledige RAG API-image. Update je docker-compose.override.yml bestand:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latestStart de containers.
docker compose up -dGebruik RAG met lokale Ollama-embeddings.
Vereiste
Je hebt Ollama en het nomic-embed-text embedding model nodig. Haal dit binnen met ollama pull nomic-embed-text.
Configureer de provider. Voeg het volgende toe aan je .env bestand:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-textSchakel over naar de volledige RAG API-image. Update je docker-compose.override.yml bestand:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest
# If running on Linux
# extra_hosts:
# - "host.docker.internal:host-gateway"Start de containers.
docker compose up -dLite vs. full image
Docker gebruikt standaard de "lite" image van de RAG API (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest), die alleen remote embeddings ondersteunt van OpenAI of een remote HuggingFace/Ollama-service die je hebt geconfigureerd.
Voor lokale embeddings, wijzig de image in het compose-bestand naar de volledige build, registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest. Breng deze wijziging aan in je Docker Compose Override File. Zie docker-compose.override.yml.example in de root van het project voor een voorbeeld.
Als je een compose-bestand wilt dat alleen de PostgreSQL + pgvector-database en de Python API bevat, zie dan rag.yml in de root van het project.
Database-opslag
De standaard compose-bestanden slaan de pgvector/PostgreSQL-gegevens op in het door Docker beheerde pgdata2 volume. Dit is bewust gedaan: de databasebestanden hoeven niet direct vanaf de host te worden bewerkt, en een beheerd volume voorkomt veelvoorkomende problemen met eigenaarschap en rechten. Bestanden die voor de gebruiker toegankelijk en bewerkbaar zijn (uploads, logs, afbeeldingen, MongoDB-gegevens en NGINX-configuratie) zijn via bind-mounts gekoppeld aan projectmappen waar directe toegang vanaf de host nuttig is.
Lokale installatie
Een niet-container installatie is meer hands-on. Volg de instructies in de RAG API repo.
Stel RAG_API_URL in je LibreChat .env bestand in op de locatie waar de API bereikbaar is vanuit jouw setup. Dit verschilt van Docker, waar de waarde al is ingesteld in het standaard docker-compose.yml bestand.
Configuratie
Stel RAG API-opties in via omgevingsvariabelen in een .env bestand dat toegankelijk is voor de API. De meeste zijn optioneel, afgezien van de inloggegevens en paden die vereist zijn door de door jou gekozen provider. In de standaardconfiguratie is alleen RAG_OPENAI_API_KEY vereist.
Omgevingsvariabelen
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL van de RAG API-service. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | OpenAI API-sleutel voor embeddings. Overschrijft OPENAI_API_KEY voor RAG. | # RAG_OPENAI_API_KEY=sk-your-key |
| RAG_OPENAI_BASEURL | string | Aangepaste OpenAI base URL voor RAG-embeddings. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Haal de volledige bestandscontext op in plaats van de top 4 resultaten. Standaard: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Embeddings provider: openai, azure, huggingface, huggingfacetei, of ollama. Standaard: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Te gebruiken embeddings-model. De standaardwaarde hangt af van de provider. | # EMBEDDINGS_MODEL=text-embedding-3-small |
| RAG_PORT | number | Poort waarop de RAG API draait. Standaard: 8000. | # RAG_PORT=8000 |
| RAG_HOST | string | Hostname voor RAG API. Standaard: 0.0.0.0. | # RAG_HOST=0.0.0.0 |
| COLLECTION_NAME | string | Naam van de Vector store collectie. Standaard: testcollection. | # COLLECTION_NAME=testcollection |
| CHUNK_SIZE | number | Grootte van tekstchunks. Standaard: 1500. | # CHUNK_SIZE=1500 |
| CHUNK_OVERLAP | number | Overlap tussen chunks. Standaard: 100. | # CHUNK_OVERLAP=100 |
| OLLAMA_BASE_URL | string | Ollama base URL bij gebruik van Ollama embeddings. | # OLLAMA_BASE_URL=http://host.docker.internal:11434 |
Referentievoorrang
OPENAI_API_KEY werkt voor RAG-embeddings, maar RAG_OPENAI_API_KEY overschrijft deze om inloggegevensconflicten te voorkomen.
Voor de volledige lijst met variabelen en hun beschrijvingen, zie de RAG API repo.
Gebruik
Zodra de RAG API actief is, integreert deze automatisch met LibreChat. Wanneer een gebruiker bestanden uploadt naar een gesprek, indexeert de API deze en gebruikt ze voor contextbewuste antwoorden.
Upload bestanden naar het gesprek. Als RAG_API_URL niet is geconfigureerd of niet bereikbaar is, mislukt de upload.
Chat zoals gewoonlijk. Terwijl de gebruiker interactie heeft met het model, haalt de RAG API relevante passages op uit de geïndexeerde bestanden op basis van de invoer en gebruikt deze om de prompt aan te vullen.
Bepaal wanneer bestanden worden doorzocht. Standaard wordt de vector store doorzocht bij elk nieuw bericht in een gesprek waaraan een bestand is gekoppeld. Stel je prompts hierop af.
Schakel Resend Files uit in de gespreksinstellingen om bestanden alleen te bevragen wanneer ze expliciet aan een bericht zijn toegevoegd.
Hergebruik geïndexeerde bestanden. Upload een bestand één keer en voeg het daarna toe aan elk nieuw bericht of gesprek vanuit het zijpaneel.
Bestanden moeten in "Host"-opslag staan. "OpenAI"-bestanden worden anders behandeld en zijn exclusief voor Assistants; ze mogen dus niet zijn geüpload terwijl de Assistants endpoint was geselecteerd en actief. Bekijk en beheer je bestanden via het zijpaneel.
Probleemoplossing
Als je problemen ondervindt bij het instellen of gebruiken van de RAG API:
- Bevestig dat alle vereiste omgevingsvariabelen correct zijn ingesteld in je
.envbestand. - Zorg ervoor dat de vector database geconfigureerd en toegankelijk is.
- Controleer of de OpenAI API-sleutel of andere inloggegevens van de provider geldig zijn.
- Controleer zowel de LibreChat- als de RAG API-logs op fouten of waarschuwingen.
Als het probleem aanhoudt, raadpleeg dan de RAG API-documentatie of vraag het aan de LibreChat-community op GitHub Discussions of Discord.
Hoe is deze gids?
Tokengebruik
Dit behandelt hoe je tokengebruik in LibreChat kunt bijhouden en beheren. Je leert hoe je context en kosten bekijkt, transacties configureert, gebruikerssaldi inschakelt en credits toevoegt aan een account.
Overzicht
Ontdek de functies van LibreChat, waaronder agents, MCP-integratie, code-uitvoering, multimodale chat en meer.