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

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

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

Kapsayıcıları başlatın.

docker compose up -d

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

Tam 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

Kapsayıcıları başlatın.

docker compose up -d

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

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

Lite 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

KeyTypeDescriptionExample
RAG_API_URLstringRAG API servisinin URL'si.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringEmbeddings 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_BASEURLstringRAG yerleştirmeleri için özel OpenAI temel URL'si.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanİlk 4 sonuç yerine tüm dosya bağlamını getir. Varsayılan: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringEmbeddings sağlayıcısı: openai, azure, huggingface, huggingfacetei veya ollama. Varsayılan: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringKullanılacak Embeddings modeli. Varsayılan değer sağlayıcıya bağlıdır.# EMBEDDINGS_MODEL=text-embedding-3-small
RAG_PORTnumberRAG API'sinin çalıştığı port. Varsayılan: 8000.# RAG_PORT=8000
RAG_HOSTstringRAG API için ana makine adı (hostname). Varsayılan: 0.0.0.0.# RAG_HOST=0.0.0.0
COLLECTION_NAMEstringVektör deposu koleksiyon adı. Varsayılan: testcollection.# COLLECTION_NAME=testcollection
CHUNK_SIZEnumberMetin parçalarının boyutu. Varsayılan: 1500.# CHUNK_SIZE=1500
CHUNK_OVERLAPnumberParçalar arasındaki örtüşme. Varsayılan: 100.# CHUNK_OVERLAP=100
OLLAMA_BASE_URLstringOllama 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.

Sohbet ayarlarındaki Dosyaları Yeniden Gönder (Resend Files) düğmesi

Dizinlenmiş dosyaları yeniden kullanın. Bir dosyayı bir kez yükleyin, ardından Yan Panel'den herhangi bir yeni mesaja veya konuşmaya ekleyin.

Yan Panelden dizine eklenmiş dosyaları ekleme

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.

Yan Panelden dosyaları görüntüleme ve yönetme

Sorun Giderme

RAG API'sini kurarken veya kullanırken sorunlarla karşılaşırsanız:

  • .env dosyanı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?