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

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:8000

Verstrek 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-example

Start de containers.

docker compose up -d

Gebruik 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_xxxxxxxxxxxxxxxxxxxxxxx

Schakel 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

Start de containers.

docker compose up -d

Gebruik 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-text

Schakel 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 -d

Lite 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

KeyTypeDescriptionExample
RAG_API_URLstringURL van de RAG API-service.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringOpenAI API-sleutel voor embeddings. Overschrijft OPENAI_API_KEY voor RAG.# RAG_OPENAI_API_KEY=sk-your-key
RAG_OPENAI_BASEURLstringAangepaste OpenAI base URL voor RAG-embeddings.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanHaal de volledige bestandscontext op in plaats van de top 4 resultaten. Standaard: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringEmbeddings provider: openai, azure, huggingface, huggingfacetei, of ollama. Standaard: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringTe gebruiken embeddings-model. De standaardwaarde hangt af van de provider.# EMBEDDINGS_MODEL=text-embedding-3-small
RAG_PORTnumberPoort waarop de RAG API draait. Standaard: 8000.# RAG_PORT=8000
RAG_HOSTstringHostname voor RAG API. Standaard: 0.0.0.0.# RAG_HOST=0.0.0.0
COLLECTION_NAMEstringNaam van de Vector store collectie. Standaard: testcollection.# COLLECTION_NAME=testcollection
CHUNK_SIZEnumberGrootte van tekstchunks. Standaard: 1500.# CHUNK_SIZE=1500
CHUNK_OVERLAPnumberOverlap tussen chunks. Standaard: 100.# CHUNK_OVERLAP=100
OLLAMA_BASE_URLstringOllama 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.

Schakelaar voor Bestanden opnieuw verzenden in gespreksinstellingen

Hergebruik geïndexeerde bestanden. Upload een bestand één keer en voeg het daarna toe aan elk nieuw bericht of gesprek vanuit het zijpaneel.

Geïndexeerde bestanden bijvoegen 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.

Bestanden bekijken en beheren vanuit 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 .env bestand.
  • 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?