Dokümantasyon / Kurulum
PostgreSQL
ivralo durumunu pgvector'lü bir PostgreSQL'de tutar: oturumlar, çalıştırma geçmişi, uzun süreli bellek, job'lar ve bilgi dizini. Bu sayfada veritabanını hangi yollarla edinebileceğiniz, ivralo'nun içine neler koyduğu ve nasıl yedekleneceği anlatılıyor.
İçinde neler var
Konuşmaya ait her şey PostgreSQL'de, ivralo'nun kendi ivralo şemasında tutulur: oturumlar, her çalıştırmanın eksiksiz geçmişi, uzun süreli bellek kayıtları, etkin oturumunuzu gösteren işaretçi, job'lar ve bilgi dizini. Tablolar ilk kullanımda oluşturulur. Konuşmaya ait hiçbir şey yerel diske yazılmaz; bu yüzden aynı veritabanını kullanan ikinci bir makine konuşmaya kaldığı yerden devam edebilir.
pgvector, bilgi dizininin embedding'leri için gereken eklentidir. Oturumlar ve bellek buna ihtiyaç duymaz, ama aşağıdaki bütün yollar onu sağlar; böylece dizini sonradan veritabanını değiştirmeden açabilirsiniz.
PostgreSQL'de bilerek tutulmayan tek şey, bir repo'nun kod dizinidir: .ivralo/index/index.sqlite. Bu, dil sunucusunun ve git'in kod hakkında söylediklerinin önbelleğidir; silerseniz tek bedeli yeniden oluşturulmasıdır.
Veritabanı için dört yol
| Yol | Nasıl | Kim başlatıp durdurur |
|---|---|---|
| Docker | Ana dizindeki compose dosyasıyla docker compose up -d | restart: unless-stopped ile Docker |
| Var olan bir veritabanı | --postgres <url>, IVRALO_DB_URL olarak yazılır | Siz |
| ivralo'nun oluşturduğu cluster | <home>/pg/ altında, Docker yoksa | Onu kullanan ivralo süreçleri |
| Yönetilen cluster | --postgres managed, aynı cluster | Sizin servis yöneticiniz |
Geliştirici makinesinde ivralo init, onay verirseniz Docker'ı kullanır. Sunucuda ivralo init --server varsayılan olarak --postgres auto ile çalışır: önce Docker'ı, sonra makinede kurulu bir PostgreSQL'i, en son ivralo[pg] extra'sıyla gelen PostgreSQL'i dener ve hangisini seçtiğini raporunda yazar.
Yeniden çalıştırmak, önceden yapılandırılmış bir veritabanını asla değiştirmez. Değiştirmek için --postgres <url> verin. Verileri bir veritabanından diğerine taşımak ivralo'nun işi değildir.
Docker
Ana dizindeki docker-compose.yml, digest ile sabitlenmiş pgvector/pgvector:pg17 imajını ivralo-postgres adlı bir container olarak, ivralo-pgdata adlı bir volume ile çalıştırır. Portu yalnızca 127.0.0.1 üzerinde açar:
cd ~/ivralo && docker compose up -d
Veritabanı, kullanıcı ve port IVRALO_PG_DB, IVRALO_PG_USER ve IVRALO_PG_PORT ile belirlenir (varsayılanları ivralo, ivralo ve 5432). Temiz bir makinede init, .env'e bir IVRALO_PG_PASSWORD üretir. Hazır gelen varsayılan parola, yalnızca port loopback'e bağlı olduğu için kabul edilebilir; portu başka bir adreste açarsanız veritabanına da kendi parolasını verin.
Compose dosyası makinenin tamamı için tek bir container ve tek bir volume tanımlar. Bu yüzden aynı makinedeki ikinci bir ana dizin aynı veritabanını kullanır ve onun parolasına ihtiyaç duyar: IVRALO_PG_PASSWORD'ü ilk ana dizinin .env'inden kopyalayın.
Var olan bir veritabanı
ivralo init --server --postgres postgresql://ivralo:secret@db.internal:5432/ivralo ...
URL .env'e IVRALO_DB_URL olarak yazılır ve hiçbir zaman ekrana basılmaz; Docker kullanılmaz. ivralo bu veritabanında kendi ivralo şemasını oluşturur, bu yüzden kullanıcının buna yetkisi olmalıdır. Bilgi dizini açıksa veritabanında vector eklentisi de bulunmalıdır: superuser olarak bir kez CREATE EXTENSION vector çalıştırın ya da bunu ivralo index'e bırakın.
ivralo'nun oluşturduğu cluster
Docker yoksa ivralo <home>/pg/ altında kendi PostgreSQL cluster'ını oluşturur:
PATH'teki ya dapg_config --bindir'in gösterdiği dizindekiinitdbvepg_ctlile; bunlar yoksaivralo[pg]extra'sıyla gelen pgvector'lü PostgreSQL 18 ile (yaklaşık 25 MB'lık bir wheel);- üretilmiş bir parola ve
127.0.0.1üzerinde boş bir port ile; soket vesudokullanılmaz; .env'eIVRALO_DB_URLyazılır veCREATE EXTENSION vectorçalıştırılır. pgvector'süz bir PostgreSQL, neyin kurulması gerektiğini söyleyen tek bir satırla reddedilir.
Bu cluster ne bir daemon ne de bir servistir. Veritabanına ihtiyaç duyan her ivralo süreci (bir komut, bir oturum, ivralo serve, zamanlanmış bir çalıştırma) cluster'ı tutar; ilk gelen başlatır, en son çıkan durdurur. Öldürülen bir süreç tuttuğu kaydı geride bırakır; bir sonraki ivralo süreci onu temizler.
Yönetilen
--postgres managed aynı cluster'ı oluşturur, başlatıp durdurmayı sizin servis yöneticinize bırakır. init, cluster'ı başlatan ve durduran pg_ctl satırlarını basar; ivralo bu cluster'ı asla durdurmaz. Programlar extra'dan geliyorsa bu satırlar aracın ortamının içini gösterir; başka bir Python üzerine yeniden kurulum yapılırsa o yol da değişir. Bu yüzden satırları servis dosyasına kurulum oturduktan sonra yazın ve her yükseltmeden sonra ivralo doctor'dan yeniden okuyun.
Kontrol etmek
ivralo doctor'ın postgres bölümü veritabanının nereden geldiğini, cevap verip vermediğini ve portunun hangi adreste açık olduğunu gösterir. ivralo'nun oluşturduğu bir cluster için çıktı şöyledir:
postgres
ok postgres from made by ivralo under /home/ops/ivralo/pg (PostgreSQL <major> programs in <bindir>) - stopped; it starts with the next ivralo
ok data directory /home/ops/ivralo/pg/data · port <port> (loopback only) · pgvector <version>
back it up with: PGPASSWORD=<the password in IVRALO_DB_URL> <bindir>/pg_dump -h 127.0.0.1 -p <port> -U ivralo ivralo > ivralo-backup.sql
ok reachable PostgreSQL <version> on <platform>
Cevap vermeyen bir veritabanı için bir düzeltme satırı verilir: Docker'daki için start it with: docker compose up -d, sizin URL'sini verdiğiniz bir veritabanı için de URL'yi kontrol etmeniz. Veritabanı parolayı reddettiyse rapor tam olarak bunu söyler. Parola hâlâ varsayılanken Docker'ın portu loopback dışında açıksa satır başarısız olur. knowledge bölümü vector eklentisini kontrol eder; session bölümü de parolası gizlenmiş veritabanı URL'sini ve şemayı gösterir.
Yedekleme
ivralo'nun oluşturduğu bir cluster için doctor, portu ve programın tam yolunu içeren pg_dump satırını eksiksiz basar; parola, ana dizinin .env'indeki IVRALO_DB_URL'de yazan paroladır. Docker'daki veritabanını ya da kendi veritabanınızı, herhangi bir PostgreSQL'i nasıl yedekliyorsanız öyle yedekleyin; ivralo'nun bütün tabloları ivralo şemasındadır:
pg_dump -h 127.0.0.1 -p 5432 -U ivralo ivralo > ivralo-backup.sql
Ayarlar
| Ayar | Varsayılan | Ne belirler |
|---|---|---|
IVRALO_DB_URL | ayarlı değil | Veritabanı URL'sinin tamamı; host, port, kullanıcı, parola ve veritabanı ayarlarını geçersiz kılar |
IVRALO_PG_HOST | 127.0.0.1 | Host. localhost değil, çünkü Windows önce ::1'i dener ve her bağlantıda yaklaşık iki saniye kaybeder |
IVRALO_PG_PORT | 5432 | Port |
IVRALO_PG_USER | ivralo | Kullanıcı |
IVRALO_PG_PASSWORD | ivralo | Parola; init bir tane üretir |
IVRALO_PG_DB | ivralo | Veritabanı |
IVRALO_PG_SCHEMA | ivralo | ivralo'nun tablolarının bulunduğu şema |