API RAG
Skonfiguruj API Retrieval-Augmented Generation (RAG) do indeksowania i pobierania dokumentów przy użyciu Langchain i FastAPI. To API integruje się z LibreChat, aby zapewniać odpowiedzi uwzględniające kontekst na podstawie plików przesłanych przez użytkownika.
API RAG indeksuje przesłane przez użytkownika pliki i pobiera odpowiednie fragmenty w celu wzbogacenia Twoich promptów, zapewniając LibreChat odpowiedzi uwzględniające kontekst i oparte na Twoich dokumentach. Działa jako oddzielna usługa FastAPI wspierana przez bazę danych PostgreSQL + pgvector.
Dopiero zaczynasz z RAG?
Prezentacja RAG API wyjaśnia tę koncepcję bardziej szczegółowo i zawiera link do pomocnego filmu. Ta strona obejmuje konfigurację i ustawienia.
Dostępność
RAG działa z Agents, a także z Custom Endpoints, OpenAI, Azure OpenAI, Anthropic oraz Google.
Asystenci OpenAI posiadają własną implementację RAG poprzez funkcję "Retrieval" (szczegóły tutaj). Korzystanie z API RAG wraz z Assistants API jest nadal opłacalne, ponieważ OpenAI pobiera opłaty zarówno za przechowywanie plików, jak i za funkcję Retrieval. Ta integracja jest planowana w przyszłej aktualizacji.
Szybki start z Docker
W przypadku Docker, API RAG jest już skonfigurowane zarówno w domyślnym pliku docker-compose.yml, jak i deploy-compose.yml, włącznie z wartością RAG_API_URL. Musisz jedynie upewnić się, że używasz najnowszego obrazu oraz plików compose. Jeśli nie masz pewności, jak przeprowadzić aktualizację, zapoznaj się z przewodnikiem aktualizacji LibreChat dla Docker.
Współdzielony plik .env
W domyślnej konfiguracji Docker, plik .env jest współdzielony między LibreChat a RAG API. Zdefiniuj zmienne RAG w tym samym pliku. Pełna lista znajduje się w RAG API README.
Wybierz dostawcę embeddings, którego chcesz użyć.
Użyj RAG z embeddingami OpenAI. Jest to konfiguracja domyślna.
Ustaw adres URL API RAG. Dodaj poniższy wpis do swojego pliku .env:
RAG_API_URL=http://host.docker.internal:8000Podaj klucz API OpenAI (jeśli jest wymagany). Jeśli Twój klucz API OpenAI jest ustawiony na user_provided, dodaj klucz dla embeddingów. Pomiń ten krok, jeśli klucz OpenAI został już podany w pliku .env.
RAG_OPENAI_API_KEY=sk-your-openai-api-key-exampleUruchom kontenery.
docker compose up -dUżywaj RAG z embeddingami Hugging Face.
Skonfiguruj dostawcę. Dodaj poniższe informacje do swojego pliku .env:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=huggingface
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxPrzełącz się na pełny obraz RAG API. Zaktualizuj swój plik docker-compose.override.yml:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latestUruchom kontenery.
docker compose up -dUżyj RAG z lokalnymi embeddingami Ollama.
Wymagania wstępne
Potrzebujesz Ollama oraz modelu osadzeń nomic-embed-text. Pobierz go za pomocą ollama pull nomic-embed-text.
Skonfiguruj dostawcę. Dodaj poniższe informacje do swojego pliku .env:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-textPrzełącz się na pełny obraz RAG API. Zaktualizuj swój plik docker-compose.override.yml:
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"Uruchom kontenery.
docker compose up -dWersja Lite a pełny obraz
Docker domyślnie używa obrazu "lite" dla RAG API (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest), który obsługuje wyłącznie zdalne embeddingi z OpenAI lub zdalnej usługi HuggingFace/Ollama, którą skonfigurowałeś.
W przypadku lokalnych embeddingów, zmień obraz w pliku compose na pełną kompilację, registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest. Wprowadź tę zmianę w swoim pliku Docker Compose Override. Zobacz docker-compose.override.yml.example w katalogu głównym projektu, aby uzyskać przykład.
Jeśli chcesz plik compose, który zawiera tylko bazę danych PostgreSQL + pgvector oraz API w języku Python, zobacz rag.yml w katalogu głównym projektu.
Przechowywanie w bazie danych
Domyślne pliki compose przechowują dane pgvector/PostgreSQL w zarządzanym przez Docker wolumenie pgdata2. Jest to zamierzone: plików bazy danych nie trzeba edytować bezpośrednio z poziomu hosta, a zarządzany wolumen pozwala uniknąć typowych problemów z własnością i uprawnieniami. Pliki dostępne dla użytkownika, które można edytować (przesłane pliki, logi, obrazy, dane MongoDB oraz konfiguracja NGINX), są montowane jako bind-mount do folderów projektu, gdzie bezpośredni dostęp z hosta jest przydatny.
Konfiguracja lokalna
Konfiguracja bez użycia kontenerów wymaga więcej pracy ręcznej. Postępuj zgodnie z instrukcjami w repozytorium RAG API.
Ustaw RAG_API_URL w pliku .env aplikacji LibreChat na adres, pod którym API jest dostępne z poziomu Twojej konfiguracji. Różni się to od Docker, gdzie wartość ta jest już ustawiona w domyślnym pliku docker-compose.yml.
Konfiguracja
Ustaw opcje RAG API za pomocą zmiennych środowiskowych w pliku .env dostępnym dla API. Większość z nich jest opcjonalna, poza danymi uwierzytelniającymi i ścieżkami wymaganymi przez wybranego dostawcę. W domyślnej konfiguracji wymagany jest tylko RAG_OPENAI_API_KEY.
Zmienne środowiskowe
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL usługi RAG API. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Klucz API OpenAI dla osadzeń (embeddings). Nadpisuje OPENAI_API_KEY dla RAG. | # RAG_OPENAI_API_KEY=sk-your-key |
| RAG_OPENAI_BASEURL | string | Niestandardowy bazowy adres URL OpenAI dla osadzeń RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Pobierz cały kontekst pliku zamiast 4 najlepszych wyników. Domyślnie: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Dostawca Embeddings: openai, azure, huggingface, huggingfacetei lub ollama. Domyślnie: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Model embeddingów do użycia. Wartość domyślna zależy od dostawcy. | # EMBEDDINGS_MODEL=text-embedding-3-small |
| RAG_PORT | number | Port, na którym działa RAG API. Domyślnie: 8000. | # RAG_PORT=8000 |
| RAG_HOST | string | Nazwa hosta dla RAG API. Domyślnie: 0.0.0.0. | # RAG_HOST=0.0.0.0 |
| COLLECTION_NAME | string | Nazwa kolekcji w magazynie wektorowym. Domyślnie: testcollection. | # COLLECTION_NAME=testcollection |
| CHUNK_SIZE | number | Rozmiar fragmentów tekstu. Domyślnie: 1500. | # CHUNK_SIZE=1500 |
| CHUNK_OVERLAP | number | Nakładanie się fragmentów. Domyślnie: 100. | # CHUNK_OVERLAP=100 |
| OLLAMA_BASE_URL | string | Bazowy adres URL Ollama podczas korzystania z osadzeń (embeddings) Ollama. | # OLLAMA_BASE_URL=http://host.docker.internal:11434 |
Pierwszeństwo poświadczeń
OPENAI_API_KEY działa w przypadku osadzeń RAG, ale RAG_OPENAI_API_KEY nadpisuje tę wartość, aby uniknąć konfliktów poświadczeń.
Pełną listę zmiennych oraz ich opisy można znaleźć w repozytorium RAG API.
Użycie
Gdy RAG API jest uruchomione, integruje się ono z LibreChat automatycznie. Kiedy użytkownik przesyła pliki do konwersacji, API indeksuje je i wykorzystuje do generowania odpowiedzi uwzględniających kontekst.
Przesyłaj pliki do konwersacji. Jeśli RAG_API_URL nie jest skonfigurowany lub jest nieosiągalny, przesyłanie zakończy się niepowodzeniem.
Czatuj jak zwykle. Gdy użytkownik wchodzi w interakcję z modelem, API RAG pobiera odpowiednie fragmenty z zaindeksowanych plików na podstawie danych wejściowych i wykorzystuje je do rozszerzenia promptu.
Kontroluj, kiedy pliki są przeszukiwane. Domyślnie baza wektorowa jest przeszukiwana przy każdej nowej wiadomości w konwersacji, do której dołączono plik. Formułuj swoje prompty odpowiednio do tego zachowania.
Wyłącz Resend Files w ustawieniach konwersacji, aby wysyłać zapytania dotyczące plików tylko wtedy, gdy są one wyraźnie dołączone do wiadomości.
Używaj ponownie zindeksowanych plików. Prześlij plik raz, a następnie dołącz go do dowolnej nowej wiadomości lub konwersacji z poziomu panelu bocznego (Side Panel).
Pliki muszą znajdować się w pamięci "Host". Pliki "OpenAI" są traktowane inaczej i są przeznaczone wyłącznie dla Asystentów, więc nie mogły zostać przesłane, gdy punkt końcowy (endpoint) Assistants był wybrany i aktywny. Przeglądaj i zarządzaj swoimi plikami z poziomu Panelu bocznego.
Rozwiązywanie problemów
Jeśli napotkasz problemy z konfiguracją lub używaniem RAG API:
- Upewnij się, że wszystkie wymagane zmienne środowiskowe są poprawnie ustawione w pliku
.env. - Upewnij się, że baza danych wektorowych jest skonfigurowana i dostępna.
- Zweryfikuj, czy klucz API OpenAI lub inne dane uwierzytelniające dostawcy są poprawne.
- Sprawdź zarówno logi LibreChat, jak i RAG API pod kątem błędów lub ostrzeżeń.
Jeśli problem nadal występuje, zapoznaj się z dokumentacją RAG API lub zapytaj społeczność LibreChat na GitHub Discussions lub Discordzie.
Jaka jest ta instrukcja?
Zużycie tokenów
Obejmuje to sposób śledzenia i kontrolowania zużycia tokenów w LibreChat. Dowiesz się, jak przeglądać kontekst i koszty, konfigurować transakcje, włączać salda użytkowników oraz dodawać środki do konta.
Przegląd
Poznaj funkcje LibreChat, w tym agentów, integrację MCP, wykonywanie kodu, czat multimodalny i wiele więcej.