11章表現学習と埋め込み
前章では、言語モデルを外部ツール、特にデータストアとどのように連携させるかを学びました。外部データは、テキストファイル、データベースのテーブル、ナレッジグラフなど、さまざまな形式で存在します。これらのデータは、特定のドメインに特化したナレッジベースから、LLMによって生成された中間出力や最終出力まで、非常に多様なコンテンツにわたります。
もしデータが構造化されていて、たとえばリレーショナルデータベースに格納されているような場合には、言語モデルは必要なデータを取得するためにSQLクエリを発行することができます。しかし、データが構造化されていない場合はどうすればよいでしょうか?
構造化されていないテキストデータから情報を取得する方法には、キーワード検索や正規表現の使用などがあります。前章で出てきた「AppleのCFO」に関する情報を探す場合、財務開示資料のコーパスの中からCFOに関する記述を含むテキストを取り出すことで、在任開始日や任期に関する情報が含まれていることを期待できます。たとえば以下のような正規表現を使うことができます。
pattern = r"(?i)\b(?:C\.?F\.?O|Chief\s+Financial\s+Officer)\b"
しかし、キーワード検索には限界があります。CFOの就任日や任期を表現する方法は無数にあり、それがコーパスに存在するかどうかもわかりません。上記のような包括的な正規表現を使用したとしても、偽陽性(False Positive)※1が大量に発生する可能性があります。
※1 訳注:ここでは、求めている情報ではないのにもかかわらず、間違えて検索してしまうことを指します。
そのため、キーワード検索を超えるアプローチが必要です。ここ数十年の間に、情報検索の分野ではBM25のような手法が発展し、検索システムの中核を担ってきました。これらの手法については12章で詳しく学びます。そして、LLMの時代においては、埋め込み表現に基づく検索システムが標準的な実装方法として急速に広まりつつあります。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access