# 04. UpstageEmbeddings

```python
# File pengaturan untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv

# Memuat informasi API KEY
load_dotenv()
```

## Upstage

Upstage adalah perusahaan rintisan Korea yang berspesialisasi dalam teknologi kecerdasan buatan (artificial intelligence/AI), khususnya di bidang model bahasa besar (LLM) dan AI dokumen.

### **Dapatkan API KEY**

* API Key dapat dikeluarkan dari [Konsol API Upstage](https://www.google.com/url?q=https%3A%2F%2Fconsole.upstage.ai%2Fapi-keys).

```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://developers.upstage.ai/docs/apis/embeddings](https://www.google.com/url?q=https%3A%2F%2Fdevelopers.upstage.ai%2Fdocs%2Fapis%2Fembeddings)

### **Informasi model**

| Model                           | Release Date | Context Length | Description                                                                                                                                                                                         |
| ------------------------------- | ------------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| solar-embedding-1-large-query   | 2024-05-10   | 4000           | Model Solar-base Query Embedding dengan batasan konteks 4k. Model ini dioptimalkan untuk meng-embedding pertanyaan pengguna dalam tugas pencarian informasi seperti pencarian dan penyusunan ulang. |
| solar-embedding-1-large-passage | 2024-05-10   | 4000           | Model Solar-base Passage Embedding dengan batasan konteks 4k. Model ini dioptimalkan untuk meng-embedding dokumen atau teks yang akan dicari.                                                       |

```python
from langchain_upstage import UpstageEmbeddings

# Model embedding khusus untuk kueri
query_embeddings = UpstageEmbeddings(model="solar-embedding-1-large-query")

# Model embedding khusus untuk kalimat
passage_embeddings = UpstageEmbeddings(model="solar-embedding-1-large-passage")
```

Sematkan `query`.

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

Sematkan dokumen.

```python
# Embedding dokumen
embedded_documents = passage_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("[Query] Saya membutuhkan produk untuk memutar musik.\n====================================")
for i, idx in enumerate(sorted_idx):
    print(f"[{i}] Kesamaan: {similarity[idx]:.3f} | {texts[idx]}")
    print()
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://altero.gitbook.io/langchain-book-by-altero/ch08-embedding/04.-upstageembeddings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
