ベクトル化 / エンベディング(Embedding)

「ベクトル化 / エンベディング(Embedding)」

データ活用やDX成功に必要な考え方を、各種キーワードの解説で理解できる用語解説集です。
今回は、現在大変に注目されている生成AIやディープラーニングに関連する技術について考えてみましょう。

ベクトル化 / エンベディング(Embedding)とは

ベクトル化ないしはエンベディング(Embedding)とは、生成AIあるいはディープラーニングなどニューラルネットワーク一般の活用において、処理させたいデータを数値データに変換することです。
ニューラルネットワークは数値を入力として受け取り数値を出力するため、例えばテキストデータや画像データなどを処理させたい場合、何らかの方法で数値データに変換する必要があります。数値ベクトルに変換したデータのことを埋め込み表現(Embeddings)と呼ぶこともあります。
ベクトル化は、RAGの実現に利用されることがあることでも知られます。

「ベクトル化」はどうして必要なのか

最初に「ベクトル化」とは何で、なぜ利用する必要があるのかを説明します。

生成AIはもちろん、ディープラーニングの活用で避けられない処理だから

「ベクトル化」は、データを活用するために「利用せざるを得ない技術」として重要です。昨今話題の技術である「生成AI」、あるいはもっと一般的に「ニューラルネットワーク」の利用において必要な技術となっていることがあります。

「生成AI」とか「ニューラルネットワーク」と聞くとどういうイメージがするでしょうか。AIと呼ばれ知能を実現しているみたいなことを言われるので、なんだか高度で理解不能なことをしている漠然としたイメージがあるかもしれません。しかし、その実態とは単に「数値を入力すると数値が出力されるもの」です。

ディープラーニングもニューラルネットワークの一種のことをそう呼びますし、生成AIもニューラルネットワークで実現されています。つまり昨今において「AI活用」として話題になっていることにはニューラルネットワークで実現されていることが多くあります。

つまり「自社のデータをAIで活用したい」のなら、そのデータを何らかの方法で数値に変換する必要があるということです。

  • ニューラルネットワークは入力として数値を受け取る
  • 生成AIとかディープラーニングはニューラルネットワークである
  • 入力して処理させたいデータは数値に変換する必要がある

「今日の気温」とか、「先月の製品売上」のような、データが最初から数値データである場合は問題ないのですが、テキストデータ(文字列)や画像など本質的に数値とは性質が違うものを処理させたい場合にも、数値にしなければそもそも入力ができません。

「ベクトル化」とは、例えばテキストデータなど数値データではないデータを「数値の並び」(つまりベクトル)に変換する処理のことです。

  • テキストデータや画像データなどを処理させたいが、数値しか入力できない
  • 何らかの方法で数値に変換せざるを得ない(ベクトル化)

そういう意味では「ベクトル化」とは、データ活用における「やむを得ない処理」であると言えます。

数値化することで演算処理などができることがある

「数値にする」ことには積極的な意味もあります。数値(あるいはベクトルデータ)にすれば、「数字にしたからこそできる処理」が可能になることがあります。

ただし、注意して欲しいのは数値にしなければ何も処理ができないわけではないことです。テキストデータのままでも、文字数を数える処理や単語の数を数える処理、検索処理(入力した文字列と一致した部分を探す)などはできます。特に事情がなければテキストデータはテキストデータのままで不便はありません。

しかし、テキストデータを数値に変換することで、文字列のままではできないような不思議なことができることがあります。例えば、Googleが開発した「word2vec」という技術を使って単語を数値変換すると、「意味」を加算(足し算)や減算(引き算)で演算処理できることがあります。例えば、

King(王) – Man(男) + Woman(女) = Queen(女王)

例えば「King」という単語を、例えば100次元のベクトル(100個の数値の集まり)に変換し、他の単語も同じように数値に変換します。すると、「王」から「男」を引き算して「女」を足し算すると、計算結果の数値がおおむね「女王」になる、と意味が計算できているような不思議なことができることが知られています。

  • 単語の意味を計算できるような「数値への変換」ができることがある

不思議な性質を持った数値に変換できる「すごい変換処理」が存在しているので、そういう変換処理を利用すると便利なことがあります。

加算や減算で意味を計算できるインパクトは大きいものの、実務で使えるかなと思うかもしれません。しかし、実用的なユースケースのあるベクトルデータに変換する処理が作られており、そのことから実務上も注目されつつあります。

代表的なものとして、「似た意味のテキストデータが似た数値に変換される」性質を持っているベクトル化処理が多数存在しており、そのような変換処理を用いると、内容の一致度を判定する手段として、あるいは意味が類似したデータを探す手段として利用できることがあります。

ベクトル化データのエコシステムが整備されているから

このように有用性があるため、ベクトル化したデータに関するエコシステムが出来上がりつつあります。

例えば、ベクトル化したデータの利用基盤として「ベクトルデータベース」の開発が世界中で(執筆現在において)急速に進められています。大量のベクトルデータを溜めて、固有の検索処理(コサイン距離での検索など)ができるデータベースです。

ベクトルデータベース(Vector database)|用語集

また、特徴的なユースケースでの利用への期待が高まっていることもあります。意味が類似したテキストデータを探す、類似した画像を探す、購入履歴から次にその人が探しそうな商品を見つける、などを現できる手段として期待されていることがあります。

ベクトル化は、このような技術的なエコシステムを利用するための「アクセス手段」としても有用で重要になりつつあります。

人にはベクトル化したデータの数値の意味は読み取れない

例えばWord2Vecで単語の意味を100次元のベクトルに変換すると、「100個の数値」(単語分散表現)が出力されます。変換結果は人にとって「謎の数値が並んでいる」だけで、それら数字がどういう意味を持つのか理解できません。ほとんどの場合、ベクトル化した結果は人には意味の解らないものになります。

Word2Vec自体もニューラルネットワークで作られており。「単語の意味はその単語の前後に並んでいる単語との関係性」で決まるという仮説によりデータを与えて学習させて作られたものです。ディープラーニング関係でありがちですが、どういう処理や判断を経て数値が出力されているのかについても、多くの場合人には理解できません。

「意味」は一種類ではないし、人の意味理解と同じでもない

Word2Vec以外にも、単語やテキストデータの意味などを数値化する取り組みが多くあります。RAGで活用されることがあり、意味を数値化できるとあって、魔法のような技術であると思われていることもありますが、それぞれ「何らかの前提」を数値に変換しているだけです。人間が意味を理解するように理解しているわけではありません。

例えば、Word2Vecは「文章でその単語の前後に出現する単語の分布」が似ている単語は意味が似ているだろうという想定で数値に変換しているだけです。言い換えれば、辞書的なリソースを参照して学習しているわけではないため、対義語(意味は大きく違うが前後の分布は似ている)や多義語(同一の単語が様々な使われ方で出現する)の処理がうまくできないことがあるとされます。

意味そのものが抽出されているというより、「何らかの前提」によって数値への変換がなされているだけなので、どういう前提でどういう性質を持つ数値に変換しているのかを意識する必要もあります。

自分たちのデータをどうやって「ベクトル化」するか

手元にテキストデータなどがあり、それをニューラルネットワークなどで利用したいなら(あるいは意味の処理をやってみたいと思うなら)、適切な手段でベクトル化して利用することになります。

基本的に外部サービスを利用する

ほとんどの場合、自分で変換処理を作ってベクトル化するのではなく、既存のクラウドサービスや既存のソフトウェアを利用して変換処理を行います。つまり、既にあるものを選んで利用します。

具体的にはWord2Vecのように公開されているソフトウェアを利用してベクトル化をすることや、クラウドサービスとして提供されている機能を利用することで数値への変換処理を行います。

例えばChatGPTを開発しているOpenAI社は、テキストデータをベクトル化するAPI(OpenAI Embedding API)を提供しており、変換した数値データでOpenAI社の様々なサービスを利用することができます。このように各社のクラウドサービスが提供しているベクトル化のAPIを利用することで、そのクラウドサービスで利用できる数値データを得ることができます。

同じ入力でもそれぞれのベクトル化サービスごとに変換後の結果は異なります。用途にあわせて、あるいは利用するクラウドサービスが想定している数値へのベクトル化を行う必要があります。

RAGで利用されることがある

ベクトル化は「RAG」において、意味が類似するドキュメントを探す技術として利用されていることがあります。

>RAGについてはこちら、
検索拡張生成(RAG:Retrieval Augmented Generation)|用語集

RAGの実現において利用する場合、ベクトル化したデータを溜めて利用することもありますが、そのような用途のために作られているベクトルデータベースというベクトル化したデータを取り扱うための専用データベースもあります。

「ベクトル化」を活用するために必要なこと

「ベクトル化」はニューラルネットワークで様々なデータを活用する手段として、あるいは数値化することで可能になる各種処理で活用する手段として活用できることがわかりました。実務でベクトル化の活用に取り組むためには、その前提として「必要に応じてデータを取ってきてベクトル化できる状況」を整備しておく必要があります。

  • 元データを参照して読み込み
  • 利用サービスに合わせて適切な前処理を行い
  • ベクトル化の変換処理を行うクラウドサービスのAPIなどを呼び出してデータを渡し、処理結果として数値化データを得る

さらには、ベクトル化したデータを活用できる状況も整備せねばなりません。

  • 数値化したデータを必要に応じて取り出し
  • ニューラルネットワークで利用する、数値化データそのものを処理して利用するなど、データを利用するサービスに渡して処理結果を得る

多くの場合、データは社内のあちこちに多種多様な形で散在しているものです。必要なデータにアクセスできる状況を整備する必要があります。さらにはデータを適切に前処理し、適切なベクトル化処理を呼び出すこと、そしてベクトル化したデータを利用するAPIなどを自在に組み合わせて呼びだせることも必要になります。

「RAGの沼」

このような「データをベクトル化して利用できるようにする」ための整備は、RAG(検索拡張生成)を実現する際にも必要になります。

  • 検索:
    • ユーザが入力したテキストを元にして、ベクトルデータベースを検索する
    • 検索結果から、ユーザの入力(質問)に関連する社内ドキュメントを取得する
  • 拡張生成:
    • ユーザ入力と、検索されたドキュメントの内容を生成AI(LLM)に入力し、応答を得る

検索拡張生成(RAG:Retrieval Augmented Generation)|用語集

上記のような検索処理ができるようにするためは、社内ドキュメントを何らかの方法でベクトル化し、ベクトル検索できるようにしておく必要があります。

  • 社内のあちこちにある対象となる社内ドキュメントを読み込む
  • ドキュメントのデータやその内容について、必要に応じてLLMが内容を理解しやすくするための「前処理」を行う
  • データをベクトル化する単位に区切る。どのように区切り、どのような単位で一つの塊とするかもよく考える必要がある
  • ベクトル化を行うクラウドサービスのAPIなどを呼び出してデータを渡し、数値化されたデータを得る

上記のような手順を素朴に実行するだけで(あるいは標準的なRAGの実施手順のようなものが世の中で整備されていてその通りに実施するだけで)、十分に機能するRAGのシステムができれば問題ないのですが、執筆現在においては残念ながらそうではない場合が多いようです。

ベクトル化(やRAG)は「意味が類似したドキュメントを探せる」すごい技術であるなどとして大きく期待されていることがあるように思いますが、実際にシステムを作ってみると「RAGで実用的な応答が得られない」「ベクトル検索で十分な検索精度が出ない」ために、「泥臭いチューニング」を延々続けざるを得ない状況に陥ることがどうもあることが問題となっています。

「RAGの沼」と呼ばれることがある状況ですが、そうなると何とかして精度を改善すべく、「前処理を新たに実施する」「前処理の方法を違う方法にしてみる」「どのような単位で一つの塊にするかを変えてみる」「別のベクトル化サービスを使ってみる」などの取り組みを繰り返すことになり、そのような試行錯誤を伴うデータ連携やデータ加工を繰り返し実施する必要に迫られることがあります。

さらにはそもそも、データそのものも社内のあちこちに多種多様な形式で散在していることが多いので(RAGで「その入力」に対して適切な応答を生成するために必須なドキュメントが、アクセスしやすい場所に利用しやすい形態で存在するとは限らない)、社内のデータに十分にアクセスできる状況をまず整える必要があり、それ自体で大変な作業になることもあります。

データ活用環境の整備で役に立つ「つなぐ」技術

つまり、「ベクトル化」の可能性を活用するためには、社内に散在するデータをうまく利用できる「データ利用環境」を整備し、さらにはクラウドサービスなどをスムーズかつ効率的に連携させて利用できる環境を整備することが必要になります。

「つなぐ」技術を活用ください

このような、多種多様なシステムやクラウド上にあるデータに連携し、必要に応じでデータを読み取り、加工し、転送処理を行い、データ環境を整備する取り組みを、「GUIだけ」で効率的に開発できる手段が存在します。EAI」や「ETL」、「iPaaS」と呼ばれる、「DataSpider」や「HULFT Square」などの「つなぐ」技術です。

GUIだけで利用できる

通常のプログラミングのようにコードを書く必要がありません。GUI上でアイコンを配置し設定をすることで、多種多様なシステムやデータ、クラウドサービスへの連携処理を実現できます。

「GUIで開発できる」ことは長所でもある

GUIだけでのノーコード開発は、本格的なプログラミングに対して簡易で妥協的な印象を受けるかもしれません。しかしながら、GUIだけで開発できることは「業務の現場の担当者が自分たち自身で主体的にクラウド連携に取り組む」ことを可能にします。ビジネスのことを一番良くわかっているのは現場の担当者です。

本格的処理を実装できる

「GUIだけで開発できる」ことを謳っている製品は沢山ありますが、そういう製品に簡易で悪い印象を持っている人もおられるかもしれません。

確かに、「簡単に作れるが簡易なことしかできない」「本格的処理を実行しようとしたら処理できずに落ちてしまった」「業務を支えられるだけの高い信頼性や安定稼働能力がなくて大変なことになってしまった」ようなことは起こりがちです。

「DataSpider」や「HULFT Square」は、簡単に使うこともできますが本格的プログラミングと同等のレベルの処理の作りこみもできます。内部的にJavaに変換されて実行されるなど本格的プログラミングと同様の高い処理能力があり、長年にわたって企業ITを支えてきた実績もあります。「GUIだけ」の良さと、本格的能力の両方を兼ね備えています。

iPaaSなので自社運用不要

DataSpiderなら自社管理下のシステムでしっかりと運用できます。クラウドサービス(iPaaS)のHULFT Squareなら、このような「つなぐ」技術そのもの自体もクラウドサービスとして自社運用不要で利用でき、自社での導入やシステム運用の手間がなく利用できます。

関係するキーワード(さらに理解するために)

機械学習に関連したキーワード

生成AI/ChatGPTに関係するキーワード

データ連携やシステム連携に関係するキーワード

  • EAI
    • システム間をデータ連携して「つなぐ」考え方で、様々なデータやシステムを自在につなぐ手段です。IT利活用をうまく進める考え方として、クラウド時代になるずっと前から、活躍してきた考え方です。
  • ETL
    • 昨今盛んに取り組まれているデータ活用の取り組みでは、データの分析作業そのものではなく、オンプレミスからクラウドまで、あちこちに散在するデータを集めてくる作業や前処理が実作業の大半を占めます。そのような処理を効率的に実現する手段です。
  • iPaaS
    • 様々なクラウドを外部のシステムやデータと、GUI上での操作だけで「つなぐ」クラウドサービスのことをiPaaSと呼びます。

「iPaaS」や「つなぐ」技術に興味がありますか?

オンプレミスにあるITシステムからクラウドサービスまで、様々なデータやシステムを自在に連携し、IT利活用をうまく成功させる製品を実際に試してみてください。

「つなぐ」ツールの決定版、データ連携ソフトウェア「DataSpider<」および、データ連携プラットフォーム「HULFT Square」

当社で開発販売しているデータ連携ツール「DataSpider」は長年の実績がある「つなぐ」ツールです。データ連携プラットフォーム「HULFT Square」はDataSpiderの技術を用いて開発された「つなぐ」クラウドサービスです。

通常のプログラミングのようにコードを書くこと無くGUIだけ(ノーコード)で開発できるので、自社のビジネスをよく理解している業務の現場が自ら活用に取り組めることも特徴です。

DataSpider / HULFT Squareの「つなぐ」技術を試してみてください:

簡易な連携ツールならば世の中に多くありますが、GUIだけで利用でき、プログラマではなくても十分に使える使いやすさをもちつつ、「高い開発生産性」「業務の基盤(プロフェッショナルユース)を担えるだけの本格的な性能」を備えています。

IT利活用の成功を妨げている「バラバラになったシステムやデータをつなぐ」問題をスムーズに解決することができます。無料体験版や、無償で実際使ってみることができるハンズオンも定期開催しておりますので、ぜひ一度お試しいただけますと幸いです。


「HULFT Square」で貴社のビジネスが変えられるか「PoC」をしてみませんか:

貴社のビジネスで「つなぐ」がどう活用できるのか、データ連携を用いた課題解決の実現可能性や得られる効果検証を行ってみませんか?

  • SaaSとのデータ連携を自動化したいが、その実現可能性を確認したい
  • データ利活用に向けて進めたいがシステム連携に課題がある
  • DXの実現に向けてデータ連携基盤の検討をしたい

用語集 コラム一覧

英数字・記号

あ行

か行

さ行

た行

な行

は行

ま行

や行

ら行

わ行

» データ活用コラム一覧

おすすめコンテンツ

Related Content

Return to column list