このプロジェクトの主な目的は、ユーザーがテキスト ドキュメントのコーパス全体でコンテキスト検索を実行できる使いやすいインターフェイスを提供することにより、ベクトル検索機能を紹介することです。 Hugging Face の BERT と Facebook の FAISS の機能を活用することで、単なるキーワードの一致ではなく、ユーザーのクエリの意味論的な意味に基づいて、関連性の高いテキストの一節を返します。このプロジェクトは、コンテキスト化されたテキスト検索の世界に深く入り込み、最先端の NLP 技術でアプリケーションを強化したいと考えている開発者、研究者、愛好家にとっての出発点として機能します。
私の目標は、ベクター データベースの舞台裏をゼロから理解できるようにすることです。
アプリケーションのスクリーンショット:
システム上で実行するには、要件ファイルを使用して pip 経由で必要なすべてのパッケージをインストールできます。
pip install -r requirements.txt
参考までに、私はPython 3.10.1を使用しています。
ただし、GPU を使用している場合は、より高速かつ大規模なデータベース統合を行うために FAISS GPU をインストールする必要があります。
このプロジェクトの現在のバージョンには以下が含まれます。
このプロジェクトは機能的なコンテキスト検索システムを提供しますが、モジュール式に設計されているため、より大きなシステムやアプリケーションへの拡張や統合が可能になります。
このプロジェクトの基礎は、最新の NLP 技術が従来のキーワードベースの方法と比較して、はるかに正確で文脈に関連した検索結果を提供できるという信念にあります。私たちのアプローチの内訳は次のとおりです。
このアプローチに基づいて、プロジェクトを 2 つのセクションに分割しました。
セクション 1: 検索可能なベクトル化データの生成
このセクションでは、まずドキュメントから入力を読み取り、それをより小さなチャンクに分割し、BERT ベースのモデルを使用してベクトルを作成し、FAISS を使用して効率的に保存します。これを説明するフロー図を次に示します。
チャンク化されたドキュメントのベクトル表現を含む FAISS インデックス ファイルを作成します。各チャンクのインデックスも保存します。これは、データベース/ドキュメントを再度クエリする必要がないように維持されます。これは、冗長な読み取り操作を削除するのに役立ちます。
このセクションは、create_index.py を使用して実行します。上記の2つのファイルが生成されます。他のモデルを使用する必要がある場合は、HuggingFace ハブから使用できますか?
注: ディメンションのハイパーパラメータの設定で問題が見つかった場合は、モデルの config.json ファイルをチェックして、使用しようとしているモデルのディメンションの詳細を見つけてください。
セクション 2: 検索可能なアプリケーション インターフェイスの構築
このセクションでの私の目標は、ユーザーがドキュメントを操作できるようにするインターフェイスを構築することです。私は追加のハードルを生じさせないミニマルなデザインを優先しています。
index.html
: 検索クエリを入力するためのフロントエンド HTML ページ。app.py
: フロントエンドを提供し、検索クエリを処理する Flask アプリケーション。search_engine.py
: 埋め込み生成、FAISS 検索、キーワード ハイライトのロジックが含まれています。 /context_search/
- templates/
- index.html
- static/
- css/
- style.css
- images/
- img1.png
- img2.png
- Approach.png files
- app.py
- search_engine.py
- create_index.py
- index_to_chunk.pkl
- faiss_index.idx
faiss_index.idx
) と、それに伴うインデックスからテキスト チャンクへのマッピング ( index_to_chunk.pkl
) があることを確認します。 python app.py
-- OR --
flask run --host=127.0.0.1 --port=5000
http://localhost:5000
に移動します。常に改善の余地があります。以下に、統合できる可能性のある改善点と追加機能をいくつか示します。
このプロジェクトは MIT ライセンスの下にあります。引用、改変、配布、投稿などご自由にご利用ください。続きを読む。
このプロジェクトの改善に興味がある場合は、貢献を歓迎します。このリポジトリでプル リクエストまたは問題を開いてください。私は基本的に上記のことを優先的に改善に取り組んでいます。他のプル リクエストも考慮されますが、優先度は低くなります。
ご興味をお持ちいただきありがとうございます。 :ハッピー: 。