自動埋め込み
自動埋め込み機能は、テキスト データのベクター埋め込みを自動的に生成します。
注記:
自動埋め込みの完全な例については、 自動埋め込みの例参照してください。
基本的な使い方
このドキュメントでは、 TiDB Cloudホストの埋め込みモデルをデモに使用しています。サポートされているプロバイダーの全リストについては、 自動埋め込みの概要参照してください。
ステップ1. 埋め込み関数を定義する
テキスト データのベクトル埋め込みを生成するための埋め込み関数を定義します。
from pytidb.embeddings import EmbeddingFunction
embed_func = EmbeddingFunction(
model_name="tidbcloud_free/amazon/titan-embed-text-v2",
)
ステップ2. テーブルとベクトルフィールドを作成する
テーブル スキーマにベクトル フィールドを作成するには、 embed_func.VectorField()使用します。
自動埋め込みを有効にするには、埋め込みたいフィールドにsource_field設定します。
from pytidb.schema import TableModel, Field
from pytidb.datatype import TEXT
class Chunk(TableModel):
id: int = Field(primary_key=True)
text: str = Field(sa_type=TEXT)
text_vec: list[float] = embed_func.VectorField(source_field="text")
table = client.create_table(schema=Chunk, if_exists="overwrite")
埋め込みモデルによって自動的に決定されるため、 dimensionsパラメータを指定する必要はありません。
ただし、 dimensionsパラメータを設定してデフォルトのディメンションを上書きすることができます。
ステップ3. サンプルデータを挿入する
テーブルにサンプルデータを挿入します。
table.bulk_insert([
Chunk(text="TiDB is a distributed database that supports OLTP, OLAP, HTAP and AI workloads."),
Chunk(text="PyTiDB is a Python library for developers to connect to TiDB."),
Chunk(text="LlamaIndex is a Python library for building AI-powered applications."),
])
データを挿入すると、 text_vecフィールドにtextから生成された埋め込みが自動的に入力されます。
ステップ4. ベクトル検索を実行する
クエリテキストをsearch()メソッドに直接渡すことができます。クエリテキストは自動的に埋め込まれ、ベクター検索に使用されます。
table.search("HTAP database").limit(3).to_list()