この2部構成のシリーズは、機械学習にSQLiteを使用して探索します。 前の記事では、生産対応のWebアプリケーションにおけるSQLiteの役割の高まりについて説明しました。この記事では、sqliteを使用して検索の高等世代(RAG)の実装に焦点を当てています。
生成AIを使用したカスタムWebアプリケーションについては、losangelesaiapps.comにアクセスしてください コードは
従来のRAG実装には、多くの場合、が含まれます
rag。でのチュートリアルの検索
人気のあるフレームワークの選択(Langchain、llamaindex)。
sqlite-vec
Sqliteの強さは、その拡張性にあります。 拡張機能は、Pythonライブラリと同様に、Cに記述された機能を追加します。主要な例は、フルテキスト検索(FTS)拡張機能です。
を提供します
カスタムデータソース:データはデータベースファイルの外に存在する可能性があります(例:CSV、API)。
sqlite-vec
特殊なインデックス作成と複雑なデータ型をサポートしています。sqlite-vec
コード(
CREATE VIRTUAL TABLE my_table USING my_extension_module();
)は、my_extension_module()
ファイルをサンプルデータ(ほとんど物理関連)として使用します。 sqlite-vec
インストール:
必要なライブラリをリストします(、、)。仮想環境を作成して、.txt
。my_docs.db
を実行します
openai APIキー:Openai APIキーを取得します
拡張子のロード:pythonコードはsqlite-vec
拡張機能をロードし、仮想テーブルを作成します:
CREATE VIRTUAL TABLE my_table USING my_extension_module();
documents
テーブルは、埋め込み(embedding
)、filenames(file_name
)、およびcontent(content
)を保存します。
補助フィールドを示します
.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 ) ''')
# ... (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()
RAGを大幅に簡素化します。 複雑なフレームワークとクラウドサービスの必要性を排除するため、費用対効果が高く、反復が容易になります。 スケーリングには最終的にはより堅牢なデータベースが必要になる場合がありますが、
は、小規模なプロジェクトに魅力的なソリューションを提供します。 拡張機能は、複数のプログラミング言語をサポートしています
sqlite-vec
sqlite-vec
以上がSQLiteでの検索拡張生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。