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

API RAG

Konfigurasikan API Retrieval-Augmented Generation (RAG) untuk pengindeksan dan pengambilan dokumen menggunakan Langchain dan FastAPI. API ini terintegrasi dengan LibreChat untuk memberikan respons berbasis konteks berdasarkan file yang diunggah pengguna.

API RAG mengindeks file yang diunggah pengguna dan mengambil bagian yang relevan untuk menambah prompt Anda, memberikan LibreChat respons yang sadar konteks dan didasarkan pada dokumen Anda. Layanan ini berjalan sebagai layanan FastAPI terpisah yang didukung oleh basis data PostgreSQL + pgvector.

Baru mengenal RAG?

RAG API Presentation menjelaskan konsep tersebut secara lebih rinci dan menyertakan tautan ke video yang bermanfaat. Halaman ini membahas penyiapan dan konfigurasi.

Ketersediaan

RAG bekerja dengan Agents, serta Custom Endpoints, OpenAI, Azure OpenAI, Anthropic, dan Google.

OpenAI Assistants memiliki implementasi RAG mereka sendiri melalui kapabilitas "Retrieval" (detail di sini). Menggunakan API RAG dengan Assistants API tetap bermanfaat karena OpenAI mengenakan biaya untuk penyimpanan file maupun Retrieval. Integrasi ini direncanakan untuk pembaruan di masa mendatang.

Memulai Cepat Docker

Untuk Docker, RAG API sudah terhubung di kedua file docker-compose.yml dan deploy-compose.yml bawaan, termasuk nilai RAG_API_URL. Anda hanya perlu memastikan bahwa Anda menjalankan image dan file compose terbaru. Lihat panduan Memperbarui LibreChat untuk Docker jika Anda tidak yakin cara memperbaruinya.

File .env bersama

Dengan pengaturan Docker default, file .env digunakan bersama antara LibreChat dan RAG API. Definisikan variabel RAG di dalam file yang sama tersebut. Daftar lengkapnya terdapat di RAG API README.

Pilih penyedia embeddings yang ingin Anda gunakan.

Gunakan RAG dengan OpenAI embeddings. Ini adalah konfigurasi default.

Atur URL API RAG. Tambahkan baris berikut ke file .env Anda:

RAG_API_URL=http://host.docker.internal:8000

Sediakan kunci API OpenAI (jika diperlukan). Jika kunci API OpenAI Anda diatur ke user_provided, tambahkan kunci untuk embeddings. Lewati langkah ini jika Anda sudah menyediakan kunci OpenAI di dalam file .env Anda.

RAG_OPENAI_API_KEY=sk-your-openai-api-key-example

Jalankan container.

docker compose up -d

Gunakan RAG dengan embedding Hugging Face.

Konfigurasikan penyedia. Tambahkan baris berikut ke file .env Anda:

RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=huggingface
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxx

Beralih ke image RAG API lengkap. Perbarui file docker-compose.override.yml Anda:

version: '3.4'

services:
  rag_api:
    image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest

Jalankan container.

docker compose up -d

Gunakan RAG dengan embedding lokal Ollama.

Prasyarat

Anda memerlukan Ollama dan model embedding nomic-embed-text. Tarik model tersebut dengan ollama pull nomic-embed-text.

Konfigurasikan penyedia. Tambahkan baris berikut ke file .env Anda:

RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-text

Beralih ke image RAG API lengkap. Perbarui file docker-compose.override.yml Anda:

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"

Jalankan container.

docker compose up -d

Lite vs. full image

Docker menggunakan image "lite" dari RAG API secara default (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest), yang hanya mendukung embedding jarak jauh dari OpenAI atau layanan HuggingFace/Ollama jarak jauh yang telah Anda konfigurasi.

Untuk local embeddings, ubah image di file compose ke build penuh, registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest. Lakukan perubahan ini di Docker Compose Override File Anda. Lihat docker-compose.override.yml.example di root proyek untuk contohnya.

Jika Anda menginginkan file compose yang hanya menyertakan database PostgreSQL + pgvector dan API Python, lihat rag.yml di root proyek.

Penyimpanan basis data

File compose default menyimpan data pgvector/PostgreSQL di dalam volume pgdata2 yang dikelola oleh Docker. Hal ini disengaja: file basis data tidak perlu diedit secara langsung dari host, dan volume terkelola menghindari masalah kepemilikan dan izin yang umum terjadi. File yang dapat diedit dan berinteraksi dengan pengguna (unggahan, log, gambar, data MongoDB, dan konfigurasi NGINX) di-bind-mount ke folder proyek di mana akses host secara langsung berguna.

Pengaturan Lokal

Pengaturan non-kontainer lebih bersifat praktis (hands-on). Ikuti petunjuk di RAG API repo.

Atur RAG_API_URL di dalam file .env LibreChat Anda ke lokasi di mana API dapat dijangkau dari pengaturan Anda. Hal ini berbeda dengan Docker, di mana nilainya sudah diatur di dalam file docker-compose.yml bawaan.

Konfigurasi

Atur opsi API RAG melalui variabel lingkungan dalam file .env yang dapat diakses oleh API. Sebagian besar bersifat opsional, selain kredensial dan jalur yang diperlukan oleh penyedia pilihan Anda. Dalam pengaturan default, hanya RAG_OPENAI_API_KEY yang diperlukan.

Variabel Lingkungan

KeyTypeDescriptionExample
RAG_API_URLstringURL layanan RAG API.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringKunci API OpenAI untuk embedding. Menggantikan OPENAI_API_KEY untuk RAG.# RAG_OPENAI_API_KEY=sk-your-key
RAG_OPENAI_BASEURLstringURL dasar OpenAI kustom untuk penyematan RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanAmbil seluruh konteks file alih-alih 4 hasil teratas. Default: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringPenyedia embeddings: openai, azure, huggingface, huggingfacetei, atau ollama. Default: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModel embeddings yang akan digunakan. Default bergantung pada penyedia.# EMBEDDINGS_MODEL=text-embedding-3-small
RAG_PORTnumberPort tempat RAG API berjalan. Default: 8000.# RAG_PORT=8000
RAG_HOSTstringHostname untuk RAG API. Default: 0.0.0.0.# RAG_HOST=0.0.0.0
COLLECTION_NAMEstringNama koleksi penyimpanan vektor. Default: testcollection.# COLLECTION_NAME=testcollection
CHUNK_SIZEnumberUkuran potongan teks. Default: 1500.# CHUNK_SIZE=1500
CHUNK_OVERLAPnumberTumpang tindih antar potongan. Default: 100.# CHUNK_OVERLAP=100
OLLAMA_BASE_URLstringURL dasar Ollama saat menggunakan embedding Ollama.# OLLAMA_BASE_URL=http://host.docker.internal:11434

Prioritas kredensial

OPENAI_API_KEY berfungsi untuk embedding RAG, tetapi RAG_OPENAI_API_KEY akan menimpanya untuk menghindari konflik kredensial.

Untuk daftar lengkap variabel dan deskripsinya, lihat RAG API repo.

Penggunaan

Setelah RAG API berjalan, API tersebut akan terintegrasi dengan LibreChat secara otomatis. Saat pengguna mengunggah file ke dalam percakapan, API akan mengindeks file tersebut dan menggunakannya untuk respons yang sadar konteks.

Unggah file ke percakapan. Jika RAG_API_URL tidak dikonfigurasi atau tidak dapat dijangkau, pengunggahan akan gagal.

Chat seperti biasa. Saat pengguna berinteraksi dengan model, API RAG akan mengambil bagian-bagian yang relevan dari file yang telah diindeks berdasarkan input dan menggunakannya untuk menambah prompt.

Kontrol kapan file dikueri. Secara default, vector store dikueri pada setiap pesan baru dalam percakapan yang memiliki file terlampir. Susun prompt Anda dengan menyesuaikan hal tersebut.

Nonaktifkan Resend Files di pengaturan percakapan untuk meminta file hanya saat file tersebut dilampirkan secara eksplisit ke pesan.

Tombol Resend Files di pengaturan percakapan

Gunakan kembali file yang telah diindeks. Unggah file sekali, lalu lampirkan ke pesan atau percakapan baru mana pun dari Panel Samping.

Melampirkan file yang telah diindeks dari Panel Samping

File harus berada dalam penyimpanan "Host". File "OpenAI" diperlakukan secara berbeda dan eksklusif untuk Assistants, sehingga file tersebut tidak boleh diunggah saat endpoint Assistants sedang dipilih dan aktif. Lihat dan kelola file Anda dari Panel Samping.

Melihat dan mengelola file dari Panel Samping

Pemecahan Masalah

Jika Anda mengalami kendala saat mengatur atau menggunakan RAG API:

  • Pastikan semua variabel lingkungan yang diperlukan telah diatur dengan benar di dalam file .env Anda.
  • Pastikan basis data vektor telah dikonfigurasi dan dapat diakses.
  • Verifikasi bahwa kunci API OpenAI atau kredensial penyedia lainnya valid.
  • Periksa log LibreChat dan RAG API untuk melihat adanya kesalahan atau peringatan.

Jika masalah tetap berlanjut, silakan merujuk ke dokumentasi RAG API atau tanyakan kepada komunitas LibreChat di GitHub Discussions atau Discord.

Bagaimana panduan ini?