> ## Documentation Index
> Fetch the complete documentation index at: https://eigendb.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# EigenDB's Python SDK

> Seamlessly integrate EigenDB into your Python applications

## Installation

<CodeGroup>
  ```bash pip theme={null}
  pip install eigen-client
  ```
</CodeGroup>

## Supported embedding models

If you desire to use a model that is not listed here, you can simply create the index with `client.create_index(...)` and provide the desired dimensions and similarity metric.

| Model Name                   | Provider | Dimensions | Similarity Metric |
| ---------------------------- | -------- | ---------- | ----------------- |
| text-embedding-3-small       | OpenAI   | 1536       | cosine            |
| text-embedding-3-large       | OpenAI   | 3072       | cosine            |
| text-embedding-ada-002       | OpenAI   | 1536       | cosine            |
| all-minilm:22m               | Ollama   | 384        | cosine            |
| nomic-embed-text:v1.5        | Ollama   | 768        | cosine            |
| mxbai-embed-large:335m       | Ollama   | 1024       | cosine            |
| snowflake-arctic-embed2:568m | Ollama   | 1024       | cosine            |
| snowflake-arctic-embed:335m  | Ollama   | 1024       | cosine            |
| bge-m3:567m                  | Ollama   | 1024       | cosine            |
| bge-large:335m               | Ollama   | 1024       | cosine            |

## Usage

### Creating an index

```py python theme={null}
import os
from eigen_client.client import Client
from eigen_client.data_types import Document

client = Client(
    url="http://localhost:8080",
    api_key="eigendb-***",
)

index = client.create_index_from_model(
    index_name="food-facts",
    model_name="text-embedding-3-small",
    model_provider="openai",
    model_provider_api_key="your openai api key..."
)

documents = [
    Document(id=1, data="Fresh herbs boost flavor.", metadata={"recipe_id": "123"}),
    Document(id=2, data="Slow simmer blends soup.", metadata={"recipe_id": "456"}),
    Document(id=3, data="Homemade bread smells great.", metadata={"recipe_id": "789"}),
    Document(id=4, data="Grilled veggies taste sweeter.", metadata={"recipe_id": "987"}),
    Document(id=5, data="Cast iron sears steak well.", metadata={"recipe_id": "654"})
]

index.upsert_docs(documents)

results = index.search_docs(
    string="Baking",
    k=3
)

print(results)
```

### Using an existing index

```py python theme={null}
import os
from eigen_client.index import Index
from eigen_client.data_types import Document

index = Index(
    url="http://localhost:8080",
    api_key="eigendb-***",
    index_name="food-facts",
    model_name="text-embedding-3-small",
    model_provider="openai",
    model_provider_api_key="your openai api key..."
)

documents = [
    Document(id=1, data="Fresh herbs boost flavor.", metadata={"recipe_id": "123"}),
    Document(id=2, data="Slow simmer blends soup.", metadata={"recipe_id": "456"}),
    Document(id=3, data="Homemade bread smells great.", metadata={"recipe_id": "789"}),
    Document(id=4, data="Grilled veggies taste sweeter.", metadata={"recipe_id": "987"}),
    Document(id=5, data="Cast iron sears steak well.", metadata={"recipe_id": "654"})
]

index.upsert_docs(documents)

results = index.search_docs(
    string="Baking",
    k=3
)

print(results)
```
