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:8000Sediakan 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-exampleJalankan container.
docker compose up -dGunakan 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_xxxxxxxxxxxxxxxxxxxxxxxBeralih 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:latestJalankan container.
docker compose up -dGunakan 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-textBeralih 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 -dLite 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
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL layanan RAG API. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Kunci API OpenAI untuk embedding. Menggantikan OPENAI_API_KEY untuk RAG. | # RAG_OPENAI_API_KEY=sk-your-key |
| RAG_OPENAI_BASEURL | string | URL dasar OpenAI kustom untuk penyematan RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Ambil seluruh konteks file alih-alih 4 hasil teratas. Default: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Penyedia embeddings: openai, azure, huggingface, huggingfacetei, atau ollama. Default: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Model embeddings yang akan digunakan. Default bergantung pada penyedia. | # EMBEDDINGS_MODEL=text-embedding-3-small |
| RAG_PORT | number | Port tempat RAG API berjalan. Default: 8000. | # RAG_PORT=8000 |
| RAG_HOST | string | Hostname untuk RAG API. Default: 0.0.0.0. | # RAG_HOST=0.0.0.0 |
| COLLECTION_NAME | string | Nama koleksi penyimpanan vektor. Default: testcollection. | # COLLECTION_NAME=testcollection |
| CHUNK_SIZE | number | Ukuran potongan teks. Default: 1500. | # CHUNK_SIZE=1500 |
| CHUNK_OVERLAP | number | Tumpang tindih antar potongan. Default: 100. | # CHUNK_OVERLAP=100 |
| OLLAMA_BASE_URL | string | URL 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.
Gunakan kembali file yang telah diindeks. Unggah file sekali, lalu lampirkan ke pesan atau percakapan baru mana pun 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.
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
.envAnda. - 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?
Penggunaan Token
Ini mencakup cara melacak dan mengontrol penggunaan token di LibreChat. Anda akan mempelajari cara melihat konteks dan biaya, mengonfigurasi transaksi, mengaktifkan saldo pengguna, dan menambahkan kredit ke akun.
Gambaran Umum
Jelajahi fitur-fitur LibreChat, termasuk agen, integrasi MCP, eksekusi kode, obrolan multimodal, dan banyak lagi.