.

非識別化エンベディングの構築方法

エンベディングはAIアプリケーションにおいて強力なツールですが、生のテキストをサードパーティモデルに送信することはセンシティブ情報の漏えいリスクを伴います。本ガイドでは、LiminaのAPIとOpenAIを使用して非識別化されたEmbeddingsパイプラインを構築し、文脈的な精度を損なわずにデータをプライベートに保つ方法を解説します。

エンベディングは、データサイエンスおよび機械学習において最も広く利用されている技術の一つです。セマンティック検索の強化から検索拡張生成(RAG)パイプラインの実現まで、キーワードマッチングだけでは実現できない方法で文脈と意味を理解することをシステムに可能にします。しかしその有用性にもかかわらず、ほとんどのEmbeddingsワークフローの中心には静かなプライバシー問題が存在しています。Embeddingsを生成するために生のテキストを外部モデルに送信すると、そのテキスト内のあらゆる個人情報やセンシティブな情報も同時に送信されてしまう点が問題となります。

ヘルスケア・金融サービス・製薬・ライフサイエンス・保険の組織にとって、これは単なる理論上の懸念ではありません。 患者記録・財務明細書・臨床ノート・顧客文書はすべてAIパイプラインへの潜在的な入力であり、これらにはすべて個人識別情報(PII)が定期的に含まれています。センシティブエンティティを事前に削除または隠蔽せずにそのデータをサードパーティAPIに渡すことは、ほぼすべての法域のプライバシー規制が深刻に扱うリスクです。

幸いなことに、この問題はEmbeddingsの品質を犠牲にせずに解決できます。本記事では、LiminaのAIデータ非識別化プラットフォームとOpenAIのEmbeddingモデルを組み合わせて、外部サービスに到達するテキストからセンシティブコンテンツが既に削除された非識別化Embeddingsパイプラインを構築する方法を解説します。結果として得られるEmbeddingsは、データをプライベートかつコンプライアンスに準拠した状態に保ちながら文脈的な精度を保持します。

Embeddingsとは何か、なぜ重要か

Embeddingsはテキストの数値表現です。センテンスや文書をEmbeddingモデルに通すと、その入力のセマンティックな意味をエンコードしたベクトル(数字のリスト)が返ってきます。重要なのは、意味が似たテキストは、使われている言葉が異なっていても数学的に近いベクトルを生成することです。この特性がEmbeddingsをとても有用にしています。

最も一般的な用途の一つは、LLMにトレーニングされていない文書からの関連する文脈を提供することです。プロンプトにドキュメント全体を送ることはほとんどの場合実用的ではありません。ほとんどのモデルには実用的でないコンテキストウィンドウの制限があります。代わりに、ドキュメントをチャンクに分割し、各チャンクをEmbeddingし、ユーザーが質問するとき、質問のEmbeddingに最も似たチャンクのEmbeddingが取得されてモデルに渡されます。これが検索拡張生成の基盤であり、AIアプリケーションがエンタープライズデータとやり取りする方法の中心となっています。

プライバシーリスクはEmbeddingのステップで表面化します。OpenAIのようなAPIを呼び出してテキストチャンクをEmbeddingするとき、そのテキストは外部サーバーに送信されます。チャンクに名前・生年月日・口座番号・診断・その他のセンシティブな情報が含まれている場合、実質的にその情報を第三者に送信したことになります。Embeddingする前にテキストを非識別化することでこの問題をソースで解決します。

Embeddingsで非識別化はどのように機能するか

非識別化とは、テキストがさらに処理される前にセンシティブエンティティを検出して削除または置換するプロセスです。Liminaのプラットフォームは、名前・住所・電話番号・メールアドレス・日付・財務識別子・医療情報を含む50以上の言語で50以上のエンティティタイプを識別します。重要なのは、Liminaのソリューションはパターンマッチングだけに頼るのではなく言語の文脈を理解するよう言語学者によって構築されているという点です。これはシステムが、誕生日である日付と予定された会議の日付を区別したり、文書の前半で登場した人物への後の言及が同一人物を指していることを認識できることを意味します。

Embeddingsパイプラインに適用された場合、非識別化は前処理ステップとして機能します。各テキストチャンクはEmbeddingモデルに送られる前にLiminaのAPIを通過します。出力は同じテキストの非識別化版であり、センシティブエンティティはエンティティタイプラベルに置換されています(例えば「John Smith」は「[NAME]」に置換)。そのクリーニングされたテキストがEmbeddingされ、結果として得られるベクトルが非識別化されたソースチャンクとともに保存されます。

Embeddingのセマンティックな整合性は主に保持されます。テキストに含まれる文脈・関係性・意味はEmbeddingでも維持されます。なぜならそれらのプロパティは文書の構造と語彙にあり、個人識別子の特定の値にはないからです。非識別化されたテキストから構築されたEmbeddingは、チャンクがサッカートーナメントのグループステージのパフォーマンスについてであることや、臨床ノートが特定の種類の有害事象を記述していることを把握できます。ただし、関係する個人の身元は保持しません。

センシティブデータを扱いAIアプリケーションをプライバシーを保護した形で構築する必要がある場合は、Liminaチームに連絡し非識別化がどのように既存のパイプラインに統合できるかをご確認ください。

開発環境の設定

このソリューションを構築するには3つのものが必要です。LiminaのAPI・Embeddingsを生成するためのOpenAI APIキー・Python環境です。LiminaのAPIキーはリクエストするかAWS Marketplaceを通じて設定できます。OpenAIのアクセスはプラットフォームで直接サインアップできます。

環境の準備ができたら4つのPythonライブラリをインストールします。OpenAI PythonクライアントはEmbeddingモデルへのリクエストを処理し、LiminaのPythonクライアントは非識別化リクエストを処理し、SciPyはEmbeddingの比較に使用するコサイン類似度関数を提供し、Pandasはテキストとエmbeddingデータを取得に便利な構造化データフレームに保存します。

pip install openaipip install privateai-clientpip install scipypip install pandas

Embeddingsパイプラインの構築

このウォークスルーでは、Wikipediaから引用した2022 FIFAワールドカップの各グループのパフォーマンスの要約がサンプルデータです。ドキュメントは各グループの要約が2つの改行文字で区切られるように構造化されており、チャンク化のための自然な区切り文字を提供しています。

最初のステップはデータを読み込み、その区切り文字を使用してチャンクに分割することです。各チャンクはPandasデータフレームに保存され、テキストと対応するEmbeddingの両方を保持する構造が作成されます。

データが読み込まれたら、次のステップは各チャンクのEmbeddingを生成することです。OpenAIのtext-embedding-ada-002モデルがこれに適した選択です。文字列を取り込んでそのEmbeddingをfloatのリストとして返す関数を作成し、get_dataframe関数を更新して各チャンクに対してこれを呼び出してその結果を保存します。

すべてのチャンクがEmbeddingされたら、パイプラインは質問を受け付け、それをEmbeddingし、そのEmbeddingを保存されたチャンクのEmbeddingと比較して最も近いものを見つけられる必要があります。SciPyのコサイン距離関数が比較を処理します。コサイン距離が小さいほどセマンティックな類似性が高いことを意味します。

LiminaのAPIでプライバシーを追加する

非識別化はエンベディング前に実行される必要があります。なぜなら順序が極めて重要だからです。非識別化がEmbeddingの後に行われた場合、センシティブデータはすでに送信されています。プライバシー保護はテキストが外部APIに環境を離れる前に適用されなければなりません。これが非識別化がget_dataframe関数の中にOpenAIへの呼び出しの前に前処理ステップとして挿入される理由です。

非識別化されたEmbeddingsは正確な結果を返すか?これが重要な問いであり、答えはYesです。更新されたパイプラインに同じ質問をすると、正しいチャンクが返ってきます。非識別化されたEmbeddingsは元のEmbeddingと同じ文脈的関係を捉えます。なぜならテキストの意味は個人識別子が削除された後も保持されるからです。

これは規制産業の組織にとって非識別化されたEmbeddingsを実用的なソリューションにします。精度とコンプライアンスのどちらかを選ぶ必要はありません。Liminaの文脈対応型非識別化はEmbeddingsが依拠する言語的関係を保持するため、モデルは基礎となる個人情報を見ることなく質問に正しく答えるために必要なすべてを持っています。

コールセンター環境で分析のために通話トランスクリプトがEmbeddingされる場合でも、患者ノートが検索システムにフィードされる臨床設定でも、このアプローチはプライバシーを保護した展開への明確な道筋を提供します。Liminaの非識別化が特定のアーキテクチャにどのように適合するかを探求するには、チームにお問い合わせください。

Related Articles