ホームページ > テクノロジー周辺機器 > AI > SQLiteでの検索拡張生成

SQLiteでの検索拡張生成

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2025-02-26 02:49:09
オリジナル
561 人が閲覧しました

この2部構成のシリーズは、機械学習にSQLiteを使用して探索します。 前の記事では、生産対応のWebアプリケーションにおけるSQLiteの役割の高まりについて説明しました。この記事では、sqliteを使用して検索の高等世代(RAG)の実装に焦点を当てています。

生成AIを使用したカスタムWebアプリケーションについては、losangelesaiapps.com

にアクセスしてください コードは

従来のRAG実装には、多くの場合、が含まれます

rag。

でのチュートリアルの検索

人気のあるフレームワークの選択(Langchain、llamaindex)。
  1. クラウドベクトルデータベース(Pinecone、Weaviate)の選択 これらのコンポーネントを統合します。
  2. 効果的ですが、このアプローチは、特に初心者にとっては過度に複雑になる可能性があります。 この記事では、
  3. 拡張機能とOpenAI APIを使用したSQLiteを使用したより簡単な方法を示しています。 このシリーズのパート1では、SQLiteの機能の詳細な概要を説明します。 この記事では、SQLiteのシンプルさを単一ファイルデータベースとして理解するだけで十分です。
  4. このアプローチは、クラウドベクトルデータベースとかさばるフレームワークの必要性を排除します。
  5. sqlite-vec:sqliteのパワーを拡張

sqlite-vecSqliteの強さは、その拡張性にあります。 拡張機能は、Pythonライブラリと同様に、Cに記述された機能を追加します。主要な例は、フルテキスト検索(FTS)拡張機能です。

ベクトル検索機能を追加し、キーワードマッチングを超えてセマンティック理解を可能にします。 「馬」を検索すると、「馬術」または「ポニー」が戻ってくる可能性があります

は、仮想テーブルを使用して、

を提供します

カスタムデータソース:

データはデータベースファイルの外に存在する可能性があります(例:CSV、API)。 sqlite-vec

柔軟な機能:​​

特殊なインデックス作成と複雑なデータ型をサポートしています。sqlite-vec

    シームレスな統合:
  • 標準のsqliteクエリの構文と統合。
  • モジュール:
  • バックエンドロジックは、個別のモジュールに実装されています。
  • 仮想テーブルは次のものを使用して作成されます
  • モジュールを指定します(ここでは、
  • from
  • )。
  • コードウォークスルー

コード(
CREATE VIRTUAL TABLE my_table USING my_extension_module();
ログイン後にコピー
ログイン後にコピー
repo link

)は、my_extension_module()ファイルをサンプルデータ(ほとんど物理関連)として使用します。 vec0 sqlite-vec

インストール:

必要なライブラリをリストします(

)。仮想環境を作成して、.txtmy_docs.dbを実行します

  1. openai APIキー:Openai APIキーを取得します

  2. 拡張子のロード:pythonコードはsqlite-vec拡張機能をロードし、仮想テーブルを作成します:

CREATE VIRTUAL TABLE my_table USING my_extension_module();
ログイン後にコピー
ログイン後にコピー

documentsテーブルは、埋め込み(embedding)、filenames(file_name)、およびcontent(content)を保存します。 補助フィールドを示します

  1. 埋め込みと挿入:コードはファイルを介して繰り返し、Openai APIを使用して埋め込みを生成し、データベースに挿入します:.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
    )
''')
ログイン後にコピー
  1. rag query:a knn queryは、類似性の埋め込みに基づいて同様のドキュメントを取得します:
# ... (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()
ログイン後にコピー
結果は、クエリに答えるためにOpenaiチャットの完了のコンテキストとして使用されます。

結論

RAGを大幅に簡素化します。 複雑なフレームワークとクラウドサービスの必要性を排除するため、費用対効果が高く、反復が容易になります。 スケーリングには最終的にはより堅牢なデータベースが必要になる場合がありますが、

は、小規模なプロジェクトに魅力的なソリューションを提供します。 拡張機能は、複数のプログラミング言語をサポートしています sqlite-vec sqlite-vec

以上がSQLiteでの検索拡張生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート