検索システムでは、インテリジェントな質問応答システムのアプリケーション(非構造化データ、グラフ、情報抽出、テキスト検索)

検索システムの動作は、簡単に言えば、ユーザーの検索ワードを処理した後、データベースから回答を見つけます。ここでは、インテリジェントな質疑応答の検索システムについてのみ説明します。システムは、初期段階でデータを保存する必要があり、その後、ユーザーが検索するときにデータを読み取るため、2 つの部分に分かれています。

1. データストレージ

データはグラフデータベースに保存する必要があります。

1.1. マップを構築するには、非構造化データやプロジェクト要件に基づいて、抽出するエンティティのカテゴリやエンティティ間の関係を定義する必要があります。たとえば、ユーザーの質問方法に応じて、どのような回答を求めたいのか、回答内容に応じてエンティティのカテゴリと関係を定義します。
1.2、モデル抽出、エンティティを構築した後、非構造化テキストから情報を抽出します。paddleNLP の情報抽出フレームワーク uie を使用します。

最初にエンティティ ラベリング仕様に従ってモデル トレーニング セットにラベルを付け、次にエンティティ抽出モデルをトレーニングしてから非構造化文書データを抽出し、抽出されたエンティティをグラフ標準形式に従ってグラフ データベースおよび ES に保存する必要があります。
具体的な実践的な手順の参考リンク:リンク

2. データの読み込み

次に、paddleNLP のインテリジェントな質問応答システムを直接使用して、
インテリジェントな質問応答システムの簡単な紹介を作成します。質問応答システムは、情報検索システムの高度な形式です。ユーザーが入力した質問を理解し、そこから回答を見つけます。ナレッジベースを活用し、ユーザーに直接フィードバックします。
paddleNLP の質問応答システムを使用すると、自分のデータを処理してインテリジェントな質問応答システムに接続するだけで済みます。
特定の操作手順と一般的な問題については、私との間のドキュメントのリンクを参照してください:リンク
私は、の投稿を直接使用していますインテリジェント質問応答システムを終了し、独自の ES ライブラリ、
paddleNLP プリセット質問応答システム モデル (想起モデル、ソート モデル、読解モデル) のインテリジェント質問応答システムに置き換えます。

意味検索システム

1. シナリオの概要

検索システム利用者は、クエリという検索語を入力することで膨大なデータの中から関連する文書を迅速に見つけることができ、意味検索システムを備えており、ユーザーのクエリの真意を正確に捉えて検索することで、正確に一致する結果を返すことができます。最も高度なセマンティック インデックス作成モデルを通じてテキストのベクトル表現を検索し、高緯度空間でインデックスを作成し、クエリを測定します。ベクトルとインデックス付き記事間の類似度によって、キーワード インデックス作成によって引き起こされる欠陥を解決できます。

2. 機能アーキテクチャ

セマンティック インデックスを使用すると、セマンティック情報をより適切に表現できます。セマンティック検索システムの鍵は、キーワードの代わりにセマンティクスを使用して、類似した結果をより正確かつ広範囲に呼び出すことです。全体の導入は次のとおりです: 左側はリコール リンク、コア
ここに画像の説明を挿入
は意味ベクトル抽出モジュール、右側はソート リンク、コアはソート モデルです。リコール リンクでは、ユーザーは自分のコーパスを通じてベクトル インデックス ライブラリを構築する必要があります。ユーザーはクエリを開始した後、ベクトルを取得できます最も類似性の高いベクトルを見つけます
。ベクトルに対応するテキスト、ソート リンクは主に呼び出されたテキストを並べ替えます。

リコールモジュール

リコールモジュールは、数千万のデータから候補データを迅速にリコールする必要があり、まずコーパス内のテキストの埋め込みを抽出し、次に Milvus などのすべてのベクトルエンジンを使用して効率的な ANN を実装する必要があります。 ) 候補テキスト内の一般的なクエリ単語 Query と相関の高い TopK Doc を高速 (ミリ秒レベル) スクリーニングし、
ベクトル検索エンジンの ANN を使用して効率的な近似最近傍検索 (近似最近傍検索) を行います。近隣検索)。大規模なデータセットでは、各データ ポイントを反復して最近傍を見つけるのは非常に時間がかかります。ANN は、ニューラル ネットワークの並列性と分散表現を利用して、効率的なインデックス構造を構築することで最近傍検索のプロセスを高速化します。

ANN は、k 最近傍ツリー (kd ツリー)、ボール ツリー (ボール ツリー)、ハッシュ テーブル (ハッシュ)、局所性依存ハッシュ (LSH) など、さまざまな構造とアルゴリズムを採用できます。これらの方法は、さまざまな原理とデータ構造に基づいて、データセット全体のグローバル検索を必要とせずに、クエリ ベクトルに最も近いデータ ポイントを迅速に特定することを目的としています。
ミルバス

ソートモジュール

ソート モデルは、リコール モデルによって選別された TopK Doc の結果に基づいて、各クエリとドキュメントのペアワイズ マッチング計算を実行します。ソート モデルはより正確であり、ソート モジュールは事前トレーニング モデル ERNIE に基づいています。ペアごと
のトレイン セマンティック マッチング モデルの基本的な考え方は、サンプルのドキュメント ペアを構築し、それらをペアごとに比較し、比較から順序を学習することです。

評価指標

モデル効果指標
1. 意味検索の再現段階で使用される指標は Recall@K で、予測前の上位 k 件の結果とコーパス内の実際の上位 k 件の関連結果の重複率を示し、検索の再現率を測定します。 2
. 分類段階で使用されるインデックスは AUC であり、サンプルを分類する分類子の能力を反映しています。サンプルが完全にランダムに分類されている場合、AUC は 0.5 に近いはずです。分類子が実際の陽性者をランク付けする可能性が高くなります。サンプルが前にある場合、AUC 値が大きいほど、分類パフォーマンスが向上します。

モデルトレーニング

(1) 文献のクエリ、タイトル、キーワード、および要約フィールドを使用して、ドメイン適応型事前トレーニング用のラベルなしデータ セットを構築します (2) クエリ、タイトル、キーワードの 3 つのフィールドを使用してラベルなしデータ セットを構築し
、教師なし再現トレーニング SimCSE;
(3) クエリ、タイトル、文献のキーワードを使用して、陰性ラベルのサンプルを除外して陽性ラベルを持つデータ セットを構築し、バッチ内陰性戦略に基づいてトレーニングします; (4). 並べ替えステージ
、ユーザーのクリック (ポジティブ サンプルとして) およびクリックされていないデータ (ネガティブ サンプルとして) を使用して、並べ替え段階のトレーニング セットを構築し、微調整トレーニングを実行します。

ここに画像の説明を挿入
ここに画像の説明を挿入

最初の段階では、自然言語処理で使用される事前トレーニングを使用して、特定のフィールドで事前トレーニングされたモデルのパフォーマンスを最適化するドメイン適応型事前トレーニングを使用します。トレーニング モデルはターゲット フィールドに適応します。プロセスの詳細な説明
1. 事前トレーニング、まず ERNIE、BERT、または GPT を使用し、教師なし学習を使用して大規模な一般コーパスに対して事前トレーニングを実行します トレーニング プロセス中に、モデルはテキスト内のマスクを予測します. 汎用言語表現を学習するために単語または文をコード化します。このステップは、モデルに強力な言語理解機能を提供することです。 2. モデルを特定の分野に適応させるために、特定の分野のデータを収集します

モデルはさらに微調整され、モデル パラメーターは特定のドメインの目標やタスクを通じて更新され、モデルの重みはバックプロパゲーションと勾配降下法を通じて調整されます。モデルはドメイン固有のデータを使用して、ドメイン固有のタスクを最適化することでターゲット ドメインに適応します。目的関数。
4. 転移学習では、特定のドメインで微調整した後、適応したモデルをターゲット ドメインの下流タスクに使用できます。

domain_adaptive_pretraining/
|—— scripts
    |—— run_pretrain_static.sh # 静态图与训练bash脚本
├── ernie_static_to_dynamic.py # 静态图转动态图
├── run_pretrain_static.py # ernie1.0静态图预训练
├── args.py # 预训练的参数配置文件
└── data_tools # 预训练数据处理文件目录

SimCSE (Similarity Classification and Sentence Embedding) は、文の表現を学習し、文の類似性を測定する手法です。SimCSE の目的は、入力文をエンコードすることで埋め込み空間内で類似した文を近づけることで、類似性の測定と意味的一致タスクを容易にすることです。

SimCSE の中心となるアイデアは、自己比較損失 (Contrastive Loss) を使用してモデルをトレーニングすることです。具体的な手順は次のとおりです。

文のエンコード: 事前トレーニングされた言語モデル (BERT など) を使用して入力文をエンコードし、文の表現ベクトルを取得します。

比較サンプルの生成: 各入力文に対して、肯定的なサンプルといくつかの否定的なサンプルがランダムに選択されます。肯定的なサンプルは、入力文と意味的に類似している別の文であり、一方、否定的なサンプルは、入力文と意味的に類似していない文である。

対比損失計算: 肯定的なサンプルに対する入力文の類似性スコアを計算し、それを否定的なサンプルに対する入力文の類似性スコアと比較します。一般的に使用される類似度の尺度には、コサイン類似度と内積が含まれます。コントラスト損失は、肯定的なサンプルに対する入力文の類似性スコアを最大化し、否定的なサンプルに対する入力文の類似性スコアを最小化することによってモデルをトレーニングします。

トレーニングと最適化: バックプロパゲーション アルゴリズムと勾配降下法オプティマイザーを使用して、コントラスト損失が可能な限り小さくなるようにモデル パラメーターを更新します。

SimCSE トレーニングが完了すると、トレーニングされた文エンコード モデルを使用して、任意の 2 つの文間の類似性スコアを計算できます。これは、文の類似性判定、質問と回答の照合、情報検索など、さまざまな自然言語処理タスクに適用できます。

SimCSE の利点は、データにラベルを付けることなく自己教師あり学習を実行でき、比較損失を通じて文の表現を学習できることです。これにより、従来の教師あり学習方法で大量のラベル付きデータが必要であるという制限が克服されます。同時に、SimCSE は大規模なラベルなしデータでトレーニングされ、より一般的で豊富な文表現を学習できます。
ここに画像の説明を挿入
バッチ内ネガティブ
リンク

独自のトレーニング済みモデルをトレーニングしてアクセスしたい場合は、想起と並べ替えモデルのトレーニングについては Neural Search を参照してください。回答抽出モデルについては、トレーニング チュートリアルの machine_reading_comprehension を参照してください。想起と並べ替えモデルのアクセス プロセスについては、を参照してください。セマンティック検索のための Neural Search アクセス。このプロセスだけで十分です。モデルを読んで理解するには、モデルのロード時にモデル名をモデルのパスに置き換えるだけです。

リンク:リンク

コード分​​析

Retriever の初期化 ランカー リーダーとパイプライン
1 Retriever
まず、Retriever を初期化する必要があります。Retriever の機能はベクトルを抽出することです。実際に使用するのは DensePassageRetriever です。DensePassageRetriever は 2 つのエンコーダ モデルを使用します。1 つはクエリ テキストのエンコードに使用され、 other パッセージテキストをエンコードし、エンコード後の検索フェーズでクエリとパッセージの 2 つのベクトルを比較します。
2 ランカー
ランカーは、取得者によって取得されたパッセージを並べ替え、クエリとパッセージによってペアを形成し、それをスコアリング用のモデルに入力し、スコア値に従ってパッセージを並べ替えます。ここでは ErnieRanker を使用します。
3 Reader
Reader の役割は、Ranker によってソートされたテキストをスキャンし、最良の K 個の回答を抽出することです。このプロジェクトでは、Ernie-Gram モデルを使用する ErnieReader を使用し、dureader データセットで微調整します。答えの断片。

リンク:リンク

おすすめ

転載: blog.csdn.net/dream_home8407/article/details/129316529