埋め込みはテキストを数値ベクトルに変換し、ベクトルデータベースに保存したり、コサイン類似度で検索したり、RAGパイプラインで使用したりできます。ベクトルの長さはモデルに依存し(通常384〜1024次元)、モデルによって異なります。
推奨モデル
埋め込みの生成
CLI
コマンドラインから直接埋め込みを生成できます:
```shell
ollama run embeddinggemma "Hello world"
```
テキストをパイプして埋め込みを生成することもできます:
```shell
echo "Hello world" | ollama run embeddinggemma
```
出力はJSON配列です。
cURL
```shell
curl -X POST http://localhost:11434/api/embed \
-H "Content-Type: application/json" \
-d '{
"model": "embeddinggemma",
"input": "The quick brown fox jumps over the lazy dog."
}'
```
Python
```python
import ollama
single = ollama.embed(
model='embeddinggemma',
input='The quick brown fox jumps over the lazy dog.'
)
print(len(single['embeddings'][0])) # ベクトルの長さ
```
JavaScript
```javascript
import ollama from 'ollama'
const single = await ollama.embed({
model: 'embeddinggemma',
input: 'The quick brown fox jumps over the lazy dog.',
})
console.log(single.embeddings[0].length) // ベクトルの長さ
```
注
/api/embedエンドポイントはL2正規化(単位長)されたベクトルを返します。
埋め込みのバッチ生成
inputに文字列の配列を渡してください。
cURL
```shell
curl -X POST http://localhost:11434/api/embed \
-H "Content-Type: application/json" \
-d '{
"model": "embeddinggemma",
"input": [
"First sentence",
"Second sentence",
"Third sentence"
]
}'
```
Python
```python
import ollama
batch = ollama.embed(
model='embeddinggemma',
input=[
'The quick brown fox jumps over the lazy dog.',
'The five boxing wizards jump quickly.',
'Jackdaws love my big sphinx of quartz.',
]
)
print(len(batch['embeddings'])) # ベクトルの数
```
JavaScript
```javascript
import ollama from 'ollama'
const batch = await ollama.embed({
model: 'embeddinggemma',
input: [
'The quick brown fox jumps over the lazy dog.',
'The five boxing wizards jump quickly.',
'Jackdaws love my big sphinx of quartz.',
],
})
console.log(batch.embeddings.length) // ベクトルの数
```
ヒント
- ほとんどのセマンティック検索のユースケースではコサイン類似度を使用してください。
- インデックス作成とクエリの両方で同じ埋め込みモデルを使用してください。