Rumah > Peranti teknologi > AI > Pengambilan semula Generasi Tambahan di SQLite

Pengambilan semula Generasi Tambahan di SQLite

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2025-02-26 02:49:09
asal
561 orang telah melayarinya

Siri dua bahagian ini meneroka menggunakan SQLite untuk pembelajaran mesin. Artikel sebelumnya membincangkan peranan SQLite yang semakin meningkat dalam aplikasi web yang siap pengeluaran. Artikel ini memberi tumpuan kepada pelaksanaan Generasi Pengambilan Pengambilan (RAG) menggunakan SQLite.

Untuk aplikasi web tersuai dengan AI generatif, lawati losangelesaiapps.com

Kod tersedia di sini .

pelaksanaan kain tradisional sering melibatkan:

  1. Mencari tutorial pada kain.
  2. Memilih rangka kerja yang popular (Langchain, Llamaindex).
  3. memilih pangkalan data vektor awan (pinecone, weaviate).
  4. Mengintegrasikan komponen -komponen ini.

Walaupun berkesan, pendekatan ini boleh menjadi terlalu kompleks, terutamanya untuk pemula. Artikel ini menunjukkan kaedah yang lebih mudah menggunakan SQLite dengan lanjutan sqlite-vec dan API OpenAI. Bahagian 1 siri ini memberikan gambaran terperinci tentang keupayaan SQLite. Untuk artikel ini, ia cukup untuk memahami kesederhanaan SQLite sebagai pangkalan data satu fail.

Pendekatan ini menghapuskan keperluan untuk pangkalan data vektor awan dan rangka kerja yang besar.

sqlite-vec: memperluaskan kuasa sqlite

Kekuatan SQLite terletak pada kelanjutannya. Sambungan, sama dengan perpustakaan Python, tambah fungsi yang ditulis dalam C. Contoh utama ialah sambungan carian teks penuh (FTS). sqlite-vec Menambah keupayaan carian vektor, membolehkan pemahaman semantik di luar padanan kata kunci. Mencari "kuda" mungkin kembali "ekuestrian" atau "kuda."

sqlite-vec menggunakan jadual maya, menawarkan:

  • Sumber data tersuai: Data boleh tinggal di luar fail pangkalan data (mis., CSV, API).
  • Fungsi fleksibel: menyokong pengindeksan khusus dan jenis data kompleks.
  • Integrasi Lancar: Bersepadu dengan sintaks pertanyaan SQLite standard.
  • Modul
  • : logik backend dilaksanakan dalam modul yang berasingan.

jadual maya dibuat menggunakan:

CREATE VIRTUAL TABLE my_table USING my_extension_module();
Salin selepas log masuk
Salin selepas log masuk

my_extension_module() Menentukan modul (di sini, vec0 dari sqlite-vec).

Walkthrough kod

Kod ( pautan repo ) menggunakan .txt fail sebagai data sampel (kebanyakannya berkaitan fizik). my_docs.db adalah fail pangkalan data SQLite.

  1. Pemasangan: requirements.txt menyenaraikan perpustakaan yang diperlukan (sqlite-vec, openai, python-dotenv). Buat persekitaran maya dan jalankan pip install -r requirements.txt.

  2. Openai API Key: Dapatkan Kunci API Terbuka.

  3. Memuatkan pelanjutan: kod python memuatkan lanjutan sqlite-vec dan mencipta jadual maya:

CREATE VIRTUAL TABLE my_table USING my_extension_module();
Salin selepas log masuk
Salin selepas log masuk

The documents Jadual Kedai Embeddings (embedding), Filenames (file_name), dan Kandungan (content). menandakan bidang tambahan.

  1. Embedding and Inscion: Kod ini melewati fail , menghasilkan embeddings menggunakan API OpenAI, dan memasukkannya ke dalam pangkalan data: .txt
db.enable_load_extension(True)
sqlite_vec.load(db)
db.enable_load_extension(False)

db.execute('''
    CREATE VIRTUAL TABLE documents USING vec0(
        embedding float[1536],
        +file_name TEXT,
        +content TEXT
    )
''')
Salin selepas log masuk
  1. pertanyaan rag: pertanyaan KNN mengambil dokumen serupa berdasarkan persamaan penyembuhan:
# ... (OpenAI embedding function) ...

for file_name in os.listdir("data"):
    # ... (Open file, get content, get embedding) ...
    db.execute(
        'INSERT INTO documents (embedding, file_name, content) VALUES (?, ?, ?)',
        (serialize_float32(embedding), file_name, content)
    )
db.commit()
Salin selepas log masuk
Hasilnya kemudiannya digunakan sebagai konteks untuk penyelesaian sembang terbuka untuk menjawab pertanyaan.

Kesimpulan

Memudahkan kain dengan ketara. Ia menghapuskan keperluan untuk kerangka kerja kompleks dan perkhidmatan awan, menjadikannya kos efektif dan mudah untuk diulangi. Walaupun skala mungkin akhirnya memerlukan pangkalan data yang lebih mantap, sqlite-vec menawarkan penyelesaian yang menarik untuk projek yang lebih kecil. Pelanjutan ini menyokong pelbagai bahasa pengaturcaraan. sqlite-vec

Atas ialah kandungan terperinci Pengambilan semula Generasi Tambahan di SQLite. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan