Diese zweiteilige Serie untersucht die Verwendung von SQLite für maschinelles Lernen. Der vorherige Artikel erläuterte die wachsende Rolle von SQLite bei produktionsbereiten Webanwendungen. Dieser Artikel konzentriert sich auf die Implementierung der Abruf-Generation (RAG) mit SQLite.
Für benutzerdefinierte Webanwendungen mit generativer KI besuchen Sie LosangelesaiApps.com
Der Code ist verfügbar hier .
traditionelle Lag -Implementierung beinhaltet häufig:
Obwohl wir effektiv sind, kann dieser Ansatz insbesondere für Anfänger zu komplex sein. Dieser Artikel zeigt eine einfachere Methode mit SQLite mit der Erweiterung sqlite-vec
und der OpenAI -API. Teil 1 dieser Serie bietet einen detaillierten Überblick über die Funktionen von SQLite. Für diesen Artikel reicht es aus, die Einfachheit von SQLite als Einzelfilmatenbank zu verstehen.
Dieser Ansatz beseitigt die Notwendigkeit von Cloud -Vektor -Datenbanken und sperrigen Frameworks.
Die Stärke von sqlite liegt in seiner Erweiterbarkeit. Erweiterungen, ähnlich wie in Python-Bibliotheken, fügen Sie die in C geschriebene Funktionalität hinzu. Ein Hauptbeispiel ist die FTS-Erweiterung (Full-Text-Search).
fügt Vektorsuchfunktionen hinzu und ermöglicht das semantische Verständnis über die Keyword -Übereinstimmung hinaus. Die Suche nach "Pferden" könnte "Equestrian" oder "Pony" zurückkehren.
sqlite-vec
sqlite-vec
erstellt
CREATE VIRTUAL TABLE my_table USING my_extension_module();
Gibt das Modul an (hier my_extension_module()
aus vec0
). sqlite-vec
Code -Walkthrough
Der Code ( repo link ) verwendet Dateien als Beispieldaten (meist physikalisch bezogen). .txt
ist die SQLite -Datenbankdatei. my_docs.db
Installation: listet die erforderlichen Bibliotheken (requirements.txt
, sqlite-vec
, openai
) auf. Erstellen Sie eine virtuelle Umgebung und führen Sie python-dotenv
. pip install -r requirements.txt
aus
OpenAI -API -Schlüssel: Erhalten Sie einen OpenAI -API -Schlüssel.
Laden der Erweiterung: Der Python -Code lädt die Erweiterung sqlite-vec
und erstellt eine virtuelle Tabelle:
CREATE VIRTUAL TABLE my_table USING my_extension_module();
Die Tabelle documents
speichert Emetten (embedding
), Dateinamen (file_name
) und Inhalt (content
).
bezeichnet Hilfsfelder.
.txt
Dateien, generiert Einbetten mithilfe der OpenAI -API und fügt sie in die Datenbank ein: 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 ) ''')
# ... (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()
Die Ergebnisse werden dann als Kontext für eine OpenAI -Chat -Fertigstellung verwendet, um die Abfrage zu beantworten.
Schlussfolgerung
sqlite-vec
vereinfacht Lag erheblich. Es beseitigt die Notwendigkeit komplexer Frameworks und Cloud-Dienste, so dass es kostengünstig und leicht zu iterieren ist. Während die Skalierung möglicherweise eine robustere Datenbank erfordern, bietet sqlite-vec
eine überzeugende Lösung für kleinere Projekte. Die Erweiterung unterstützt mehrere Programmiersprachen.
Das obige ist der detaillierte Inhalt vonWiederaufnahme der Augmented -Generation in SQLite. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!