RAG API
Belge indeksleme ve getirme işlemleri için Langchain ve FastAPI kullanarak Retrieval-Augmented Generation (RAG) API'sini yapılandırın. Bu API, kullanıcı tarafından yüklenen dosyalara dayalı bağlama duyarlı yanıtlar sağlamak için LibreChat ile entegre olur.
RAG API, kullanıcı tarafından yüklenen dosyaları indeksler ve istemlerinizi zenginleştirmek için ilgili pasajları getirerek LibreChat'in belgelerinize dayalı, bağlama duyarlı yanıtlar vermesini sağlar. PostgreSQL + pgvector veritabanı tarafından desteklenen ayrı bir FastAPI servisi olarak çalışır.
RAG konusunda yeni misiniz?
RAG API Sunumu, kavramı daha ayrıntılı bir şekilde açıklar ve faydalı bir videoya bağlantı verir. Bu sayfa kurulum ve yapılandırmayı ele almaktadır.
Kullanılabilirlik
RAG, Agents ile ve ayrıca Custom Endpoints, OpenAI, Azure OpenAI, Anthropic ve Google ile çalışır.
OpenAI Assistants, "Retrieval" (Geri Getirme) yeteneği aracılığıyla kendi RAG uygulamalarına sahiptir (ayrıntılar burada). OpenAI hem dosya depolama hem de Retrieval için ücret talep ettiğinden, RAG API'sini Assistants API ile kullanmak yine de değerlidir. Bu entegrasyon gelecekteki bir güncelleme için planlanmıştır.
Docker ile Hızlı Başlangıç
Docker için RAG API, hem varsayılan docker-compose.yml hem de deploy-compose.yml dosyalarında, RAG_API_URL değeri de dahil olmak üzere halihazırda yapılandırılmıştır. Sadece en güncel imajı ve compose dosyalarını çalıştırdığınızdan emin olmanız yeterlidir. Nasıl güncelleyeceğinizden emin değilseniz Docker için LibreChat'i Güncelleme kılavuzuna bakın.
Paylaşılan .env dosyası
Varsayılan Docker kurulumuyla, .env dosyası LibreChat ve RAG API arasında paylaşılır. RAG değişkenlerini aynı dosya içerisinde tanımlayın. Listenin tamamı RAG API README dosyasında yer almaktadır.
Kullanmak istediğiniz embeddings sağlayıcısını seçin.
OpenAI embeddings ile RAG kullanın. Bu, varsayılan yapılandırmadır.
RAG API URL'sini ayarlayın. .env dosyanıza aşağıdakileri ekleyin:
RAG_API_URL=http://host.docker.internal:8000Bir OpenAI API anahtarı sağlayın (gerekirse). OpenAI API anahtarınız user_provided olarak ayarlanmışsa, embedding'ler için bir anahtar ekleyin. OpenAI anahtarını zaten .env dosyanızda sağlıyorsanız bu adımı atlayın.
RAG_OPENAI_API_KEY=sk-your-openai-api-key-exampleKapsayıcıları başlatın.
docker compose up -dHugging Face embedding'leri ile RAG kullanın.
Sağlayıcıyı yapılandırın. Aşağıdakileri .env dosyanıza ekleyin:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=huggingface
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxTam RAG API görüntüsüne geçin. docker-compose.override.yml dosyanızı güncelleyin:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latestKapsayıcıları başlatın.
docker compose up -dOllama yerel embedding'leri ile RAG kullanın.
Ön koşul
Ollama'ya ve nomic-embed-text embedding modeline ihtiyacınız var. Bunu ollama pull nomic-embed-text komutuyla çekebilirsiniz.
Sağlayıcıyı yapılandırın. Aşağıdakileri .env dosyanıza ekleyin:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-textTam RAG API görüntüsüne geçin. docker-compose.override.yml dosyanızı güncelleyin:
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"Kapsayıcıları başlatın.
docker compose up -dLite ve tam sürüm imajı
Docker, varsayılan olarak yalnızca OpenAI'dan veya yapılandırdığınız uzak bir HuggingFace/Ollama hizmetinden gelen uzak yerleştirmeleri (embeddings) destekleyen RAG API'nin "lite" imajını (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest) kullanır.
Yerel embedding'ler için, compose dosyasındaki imajı tam yapılandırma olan registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest ile değiştirin. Bu değişikliği Docker Compose Geçersiz Kılma Dosyanızda yapın. Bir örnek için projenin kök dizinindeki docker-compose.override.yml.example dosyasına bakın.
Yalnızca PostgreSQL + pgvector veritabanını ve Python API'sini içeren bir compose dosyası istiyorsanız, projenin kök dizinindeki rag.yml dosyasına bakın.
Veritabanı depolama
Varsayılan compose dosyaları, pgvector/PostgreSQL verilerini Docker tarafından yönetilen pgdata2 biriminde (volume) saklar. Bu kasıtlı bir durumdur: veritabanı dosyalarının doğrudan ana bilgisayardan (host) düzenlenmesine gerek yoktur ve yönetilen bir birim, yaygın sahiplik ve izin sorunlarını önler. Kullanıcıya dönük, düzenlenebilir dosyalar (yüklemeler, günlükler, görseller, MongoDB verileri ve NGINX yapılandırması), doğrudan ana bilgisayar erişiminin yararlı olduğu proje klasörlerine bind-mount yöntemiyle bağlanır.
Yerel Kurulum
Konteyner dışı bir kurulum daha fazla manuel işlem gerektirir. RAG API repo içindeki talimatları izleyin.
LibreChat .env dosyanızdaki RAG_API_URL değerini, API'nin kurulumunuzdan erişilebilir olduğu yere ayarlayın. Bu, değerin varsayılan docker-compose.yml dosyasında zaten ayarlı olduğu Docker'dan farklıdır.
Yapılandırma
RAG API seçeneklerini, API tarafından erişilebilen bir .env dosyasındaki ortam değişkenleri aracılığıyla ayarlayın. Seçtiğiniz sağlayıcı tarafından gerekli görülen kimlik bilgileri ve yollar dışında çoğu seçenek isteğe bağlıdır. Varsayılan kurulumda yalnızca RAG_OPENAI_API_KEY gereklidir.
Ortam Değişkenleri
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | RAG API servisinin URL'si. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Embeddings için OpenAI API anahtarı. RAG için OPENAI_API_KEY değerini geçersiz kılar. | # RAG_OPENAI_API_KEY=sk-your-key |
| RAG_OPENAI_BASEURL | string | RAG yerleştirmeleri için özel OpenAI temel URL'si. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | İlk 4 sonuç yerine tüm dosya bağlamını getir. Varsayılan: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Embeddings sağlayıcısı: openai, azure, huggingface, huggingfacetei veya ollama. Varsayılan: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Kullanılacak Embeddings modeli. Varsayılan değer sağlayıcıya bağlıdır. | # EMBEDDINGS_MODEL=text-embedding-3-small |
| RAG_PORT | number | RAG API'sinin çalıştığı port. Varsayılan: 8000. | # RAG_PORT=8000 |
| RAG_HOST | string | RAG API için ana makine adı (hostname). Varsayılan: 0.0.0.0. | # RAG_HOST=0.0.0.0 |
| COLLECTION_NAME | string | Vektör deposu koleksiyon adı. Varsayılan: testcollection. | # COLLECTION_NAME=testcollection |
| CHUNK_SIZE | number | Metin parçalarının boyutu. Varsayılan: 1500. | # CHUNK_SIZE=1500 |
| CHUNK_OVERLAP | number | Parçalar arasındaki örtüşme. Varsayılan: 100. | # CHUNK_OVERLAP=100 |
| OLLAMA_BASE_URL | string | Ollama embeddings kullanılırken Ollama base URL. | # OLLAMA_BASE_URL=http://host.docker.internal:11434 |
Kimlik bilgisi önceliği
OPENAI_API_KEY, RAG yerleştirmeleri (embeddings) için çalışır, ancak kimlik bilgisi çakışmalarını önlemek amacıyla RAG_OPENAI_API_KEY bunu geçersiz kılar.
Değişkenlerin ve açıklamalarının tam listesi için RAG API repo sayfasına bakın.
Kullanım
RAG API çalışmaya başladığında, LibreChat ile otomatik olarak entegre olur. Bir kullanıcı bir konuşmaya dosya yüklediğinde, API bunları indeksler ve bağlama duyarlı yanıtlar için kullanır.
Dosyaları sohbete yükleyin. Eğer RAG_API_URL yapılandırılmamışsa veya erişilebilir değilse, yükleme başarısız olur.
Her zamanki gibi sohbet edin. Kullanıcı model ile etkileşime girdikçe, RAG API girdi temelinde dizine eklenmiş dosyalardan ilgili pasajları alır ve bunları istemi zenginleştirmek için kullanır.
Dosyaların ne zaman sorgulanacağını kontrol edin. Varsayılan olarak, vektör deposu, dosya eklenmiş bir konuşmadaki her yeni mesajda sorgulanır. İstemi (prompt) buna göre oluşturun.
Bir mesaja açıkça eklendiklerinde dosyaları sorgulamak için konuşma ayarlarından Resend Files seçeneğini kapatın.
Dizinlenmiş dosyaları yeniden kullanın. Bir dosyayı bir kez yükleyin, ardından Yan Panel'den herhangi bir yeni mesaja veya konuşmaya ekleyin.
Dosyalar "Host" depolamasında olmalıdır. "OpenAI" dosyaları farklı şekilde işlenir ve yalnızca Assistants'a özeldir, bu nedenle Assistants endpoint'i seçili ve aktifken yüklenmemiş olmaları gerekir. Dosyalarınızı Yan Panel'den görüntüleyebilir ve yönetebilirsiniz.
Sorun Giderme
RAG API'sini kurarken veya kullanırken sorunlarla karşılaşırsanız:
.envdosyanızda gerekli tüm ortam değişkenlerinin doğru şekilde ayarlandığından emin olun.- Vektör veritabanının yapılandırıldığından ve erişilebilir olduğundan emin olun.
- OpenAI API anahtarının veya diğer sağlayıcı kimlik bilgilerinin geçerli olduğunu doğrulayın.
- Hatalar veya uyarılar için hem LibreChat hem de RAG API günlüklerini kontrol edin.
Sorun devam ederse, RAG API dokümantasyonuna başvurun veya GitHub Discussions ya da Discord üzerindeki LibreChat topluluğuna sorun.
Bu rehber nasıl?
Token Kullanımı
Bu bölüm, LibreChat içinde token kullanımını nasıl takip edeceğinizi ve kontrol edeceğinizi kapsar. Bağlam ve maliyeti nasıl görüntüleyeceğinizi, işlemleri nasıl yapılandıracağınızı, kullanıcı bakiyelerini nasıl etkinleştireceğinizi ve bir hesaba nasıl kredi ekleyeceğinizi öğreneceksiniz.
Genel Bakış
Ajanlar, MCP entegrasyonu, kod yürütme, çok modlu sohbet ve daha fazlası dahil olmak üzere LibreChat özelliklerini keşfedin.