# 05. OllamaEmbeddings

## Ollama

Ollama adalah proyek sumber terbuka yang memudahkan untuk menjalankan model bahasa berskala besar (LLM) di lingkungan lokal Anda. Alat ini memungkinkan Anda mengunduh dan menjalankan berbagai macam LLM dengan perintah sederhana, dan memungkinkan pengembang untuk bereksperimen dan menggunakan model AI secara langsung di komputer mereka sendiri. Dengan antarmuka yang mudah digunakan dan kinerja yang cepat, Ollama adalah alat yang membuat pengembangan dan eksperimen AI menjadi lebih mudah diakses dan efisien.

* [Situs web/Instalasi Resmi](https://ollama.com/)

```python
texts = [
    "Headphone Bluetooth Nirkabel dengan Pembatalan Kebisingan.",
    "Speaker Bluetooth Tahan Air Portabel dengan Baterai 20 jam.",
    "Kursi Kantor Ergonomis dengan Dukungan Lumbar dan Ketinggian yang Dapat Disesuaikan.",
    "TV Smart 4K Ultra HD dengan Layanan Streaming dan Kontrol Suara.",
    "Meja Berdiri Elektrik dengan Tinggi yang Dapat Disetel Memori."
]
```

## Periksa model penyematan yang didukung

[https://ollama.com/library](https://ollama.com/library)

```python
from langchain_community.embeddings import OllamaEmbeddings

ollama_embeddings = OllamaEmbeddings(
    model="nomic-embed-text",
    # model="chatfire/bge-m3:q8_0" # BGE-M3
)
```

sematkan `query`

```python
# Embedding kueri
embedded_query = ollama_embeddings.embed_query("Saya membutuhkan produk untuk memutar musik")
# Menampilkan dimensi embedding
print(len(embedded_query))
```

```
768
```

sematkan dokumen

```python
# Embedding dokumen
embedded_documents = ollama_embeddings.embed_documents(texts)
```

Mengeluarkan hasil perhitungan kemiripan.

```python
import numpy as np

# Pertanyaan (embedded_query): Tolong beri tahu saya tentang LangChain.
similarity = np.array(embedded_query) @ np.array(embedded_documents).T

# Mengurutkan berdasarkan kesamaan dalam urutan menurun
sorted_idx = (np.array(embedded_query) @ np.array(embedded_documents).T).argsort()[::-1]

# Menampilkan hasil
print("[Kueri] Saya membutuhkan produk untuk memutar musik\n====================================")
for i, idx in enumerate(sorted_idx):
    print(f"[{i}] Kesamaan: {similarity[idx]:.3f} | {texts[idx]}")
    print()
```

```
[Kueri] Saya membutuhkan produk untuk memutar musik
====================================
[0] Kesamaan: 242.832 | Speaker Bluetooth Tahan Air Portabel dengan Baterai 20 jam.

[1] Kesamaan: 240.651 | Headphone Bluetooth Nirkabel dengan Pembatalan Kebisingan.

[2] Kesamaan: 240.351 | Meja Berdiri Elektrik dengan Tinggi yang Dapat Disetel Memori.

[3] Kesamaan: 220.028 | TV Smart 4K Ultra HD dengan Layanan Streaming dan Kontrol Suara.

[4] Kesamaan: 213.844 | Kursi Kantor Ergonomis dengan Dukungan Lumbar dan Ketinggian yang Dapat Disesuaikan.
```
