Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
* [OpenAI](platform/integrations/openai.md)
* [Mistral AI](platform/integrations/mistral-ai.md)
* [Jina AI](platform/integrations/jina-ai.md)
* [Voyage AI](platform/integrations/voyage-ai.md)
* [VoyageAI by MongoDB](platform/integrations/voyage-ai.md)
* [Mixedbread AI](platform/integrations/mixedbread-ai.md)
* [Nomic AI](platform/integrations/nomic-ai.md)
* [Roadmap](vector-database/roadmap.md)
2 changes: 1 addition & 1 deletion integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Model Providers

Integrating with large language models (LLMs) and embedding model providers in Epsilla allows users to tap into cutting-edge AI models for a variety of applications. Epsilla offers seamless connections to a range of providers such as OpenAI, Anthropic, and others, supporting models like GPT-4, Claude, Mistral, and embedding solutions like JinaAI, VoyageAI, etc.
Integrating with large language models (LLMs) and embedding model providers in Epsilla allows users to tap into cutting-edge AI models for a variety of applications. Epsilla offers seamless connections to a range of providers such as OpenAI, Anthropic, and others, supporting models like GPT-4, Claude, Mistral, and embedding solutions like JinaAI, VoyageAI by MongoDB, etc.

<figure><img src=".gitbook/assets/Screenshot 2024-10-14 at 12.50.11 AM.png" alt=""><figcaption></figcaption></figure>

Expand Down
2 changes: 1 addition & 1 deletion knowledge-base/advanced-settings/embedding.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Read more about [embedding](../../vector-database/embeddings.md).

### Which Embedding Model Fits My Needs Best

When selecting an embedding model for your specific use case, it's important to recognize that there is no one-size-fits-all model. The ideal model depends on factors such as the nature of your use case, cost considerations, and performance requirements. OpenAI offers large and small embedding models: the large embedding model excels in general-purpose scenarios where higher quality is crucial, while the smaller model is a more cost-efficient option for use cases with tighter budget constraints. JinaAI provides embedding models well-suited for multilingual applications, making them an excellent choice for use cases involving diverse languages. For more specialized needs, VoyageAI models are optimized for vertical domains, such as financial or legal contexts, offering domain-specific insights and improved accuracy in these areas.
When selecting an embedding model for your specific use case, it's important to recognize that there is no one-size-fits-all model. The ideal model depends on factors such as the nature of your use case, cost considerations, and performance requirements. OpenAI offers large and small embedding models: the large embedding model excels in general-purpose scenarios where higher quality is crucial, while the smaller model is a more cost-efficient option for use cases with tighter budget constraints. JinaAI provides embedding models well-suited for multilingual applications, making them an excellent choice for use cases involving diverse languages. For more specialized needs, VoyageAI by MongoDB models are optimized for vertical domains, such as financial or legal contexts, offering domain-specific insights and improved accuracy in these areas.

For an overview of different models' performance across various benchmarks, you can refer to the [MTEB leaderboard](https://huggingface.co/spaces/mteb/leaderboard). However, it's important not to blindly rely on these results, as the datasets used in MTEB might not fully represent your specific use case and could be biased. Always consider evaluating models in the context of your own data and requirements.

2 changes: 1 addition & 1 deletion platform/integrations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

Epsilla is integrated with the following products in generative AI landscape

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td>OpenAI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-12-29 at 11.48.37 PM (2).png">Screenshot 2023-12-29 at 11.48.37 PM (2).png</a></td><td><a href="openai.md">openai.md</a></td></tr><tr><td></td><td>MistralAI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM.png">Screenshot 2024-02-13 at 11.32.44 AM.png</a></td><td><a href="mistral-ai.md">mistral-ai.md</a></td></tr><tr><td></td><td>LangChain</td><td></td><td><a href="../../.gitbook/assets/409e4c73-4ce9-419a-a2d4-326e9ca635c7 (1).png">409e4c73-4ce9-419a-a2d4-326e9ca635c7 (1).png</a></td><td><a href="https://python.langchain.com/docs/integrations/vectorstores/epsilla">https://python.langchain.com/docs/integrations/vectorstores/epsilla</a></td></tr><tr><td></td><td>LlamaIndex</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-07 at 11.36.24 AM.png">Screenshot 2023-09-07 at 11.36.24 AM.png</a></td><td><a href="https://gpt-index.readthedocs.io/en/stable/examples/vector_stores/EpsillaIndexDemo.html">https://gpt-index.readthedocs.io/en/stable/examples/vector_stores/EpsillaIndexDemo.html</a></td></tr><tr><td></td><td>Jina AI</td><td></td><td><a href="../../.gitbook/assets/jina-ai-logo-vector (1).png">jina-ai-logo-vector (1).png</a></td><td><a href="jina-ai.md">jina-ai.md</a></td></tr><tr><td></td><td>Voyage AI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-01-10 at 11.09.51 AM.png">Screenshot 2024-01-10 at 11.09.51 AM.png</a></td><td><a href="voyage-ai.md">voyage-ai.md</a></td></tr><tr><td></td><td>Mixedbread AI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM (1).png">Screenshot 2024-02-13 at 11.32.44 AM (1).png</a></td><td><a href="mixedbread-ai.md">mixedbread-ai.md</a></td></tr><tr><td></td><td>Nomic AI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM (2).png">Screenshot 2024-02-13 at 11.32.44 AM (2).png</a></td><td><a href="nomic-ai.md">nomic-ai.md</a></td></tr><tr><td></td><td>Trafilatura</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-10-21 at 3.09.31 PM.png">Screenshot 2023-10-21 at 3.09.31 PM.png</a></td><td><a href="https://trafilatura.readthedocs.io/en/latest/tutorial-epsilla.html">https://trafilatura.readthedocs.io/en/latest/tutorial-epsilla.html</a></td></tr><tr><td></td><td>DocArray</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-12-30 at 12.00.57 AM.png">Screenshot 2023-12-30 at 12.00.57 AM.png</a></td><td><a href="https://docs.docarray.org/user_guide/storing/index_epsilla/">https://docs.docarray.org/user_guide/storing/index_epsilla/</a></td></tr><tr><td></td><td>CambioML</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-07 at 11.35.34 AM.png">Screenshot 2023-09-07 at 11.35.34 AM.png</a></td><td><a href="https://medium.com/@richard_50832/partnership-between-cambioml-and-epsilla-621e20caf75c">https://medium.com/@richard_50832/partnership-between-cambioml-and-epsilla-621e20caf75c</a></td></tr><tr><td></td><td>AxFlow</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-18 at 6.57.12 PM.png">Screenshot 2023-09-18 at 6.57.12 PM.png</a></td><td><a href="https://github.com/axflow/axflow/blob/main/packages/axgen/src/vector_stores/epsilla.ts">https://github.com/axflow/axflow/blob/main/packages/axgen/src/vector_stores/epsilla.ts</a></td></tr></tbody></table>
<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td>OpenAI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-12-29 at 11.48.37 PM (2).png">Screenshot 2023-12-29 at 11.48.37 PM (2).png</a></td><td><a href="openai.md">openai.md</a></td></tr><tr><td></td><td>MistralAI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM.png">Screenshot 2024-02-13 at 11.32.44 AM.png</a></td><td><a href="mistral-ai.md">mistral-ai.md</a></td></tr><tr><td></td><td>LangChain</td><td></td><td><a href="../../.gitbook/assets/409e4c73-4ce9-419a-a2d4-326e9ca635c7 (1).png">409e4c73-4ce9-419a-a2d4-326e9ca635c7 (1).png</a></td><td><a href="https://python.langchain.com/docs/integrations/vectorstores/epsilla">https://python.langchain.com/docs/integrations/vectorstores/epsilla</a></td></tr><tr><td></td><td>LlamaIndex</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-07 at 11.36.24 AM.png">Screenshot 2023-09-07 at 11.36.24 AM.png</a></td><td><a href="https://gpt-index.readthedocs.io/en/stable/examples/vector_stores/EpsillaIndexDemo.html">https://gpt-index.readthedocs.io/en/stable/examples/vector_stores/EpsillaIndexDemo.html</a></td></tr><tr><td></td><td>Jina AI</td><td></td><td><a href="../../.gitbook/assets/jina-ai-logo-vector (1).png">jina-ai-logo-vector (1).png</a></td><td><a href="jina-ai.md">jina-ai.md</a></td></tr><tr><td></td><td>VoyageAI by MongoDB</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-01-10 at 11.09.51 AM.png">Screenshot 2024-01-10 at 11.09.51 AM.png</a></td><td><a href="voyage-ai.md">voyage-ai.md</a></td></tr><tr><td></td><td>Mixedbread AI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM (1).png">Screenshot 2024-02-13 at 11.32.44 AM (1).png</a></td><td><a href="mixedbread-ai.md">mixedbread-ai.md</a></td></tr><tr><td></td><td>Nomic AI</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2024-02-13 at 11.32.44 AM (2).png">Screenshot 2024-02-13 at 11.32.44 AM (2).png</a></td><td><a href="nomic-ai.md">nomic-ai.md</a></td></tr><tr><td></td><td>Trafilatura</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-10-21 at 3.09.31 PM.png">Screenshot 2023-10-21 at 3.09.31 PM.png</a></td><td><a href="https://trafilatura.readthedocs.io/en/latest/tutorial-epsilla.html">https://trafilatura.readthedocs.io/en/latest/tutorial-epsilla.html</a></td></tr><tr><td></td><td>DocArray</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-12-30 at 12.00.57 AM.png">Screenshot 2023-12-30 at 12.00.57 AM.png</a></td><td><a href="https://docs.docarray.org/user_guide/storing/index_epsilla/">https://docs.docarray.org/user_guide/storing/index_epsilla/</a></td></tr><tr><td></td><td>CambioML</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-07 at 11.35.34 AM.png">Screenshot 2023-09-07 at 11.35.34 AM.png</a></td><td><a href="https://medium.com/@richard_50832/partnership-between-cambioml-and-epsilla-621e20caf75c">https://medium.com/@richard_50832/partnership-between-cambioml-and-epsilla-621e20caf75c</a></td></tr><tr><td></td><td>AxFlow</td><td></td><td><a href="../../.gitbook/assets/Screenshot 2023-09-18 at 6.57.12 PM.png">Screenshot 2023-09-18 at 6.57.12 PM.png</a></td><td><a href="https://github.com/axflow/axflow/blob/main/packages/axgen/src/vector_stores/epsilla.ts">https://github.com/axflow/axflow/blob/main/packages/axgen/src/vector_stores/epsilla.ts</a></td></tr></tbody></table>
56 changes: 44 additions & 12 deletions platform/integrations/voyage-ai.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,65 @@
# Voyage AI
# VoyageAI by MongoDB

On Epsilla Cloud, you can enable Voyage AI integration by providing your Voyage AI API key (we securely manage your keys using AWS KMS):
On Epsilla Cloud, you can enable VoyageAI by MongoDB integration by providing your VoyageAI by MongoDB API key (we securely manage your keys using AWS KMS):

<figure><img src="../../.gitbook/assets/Screenshot 2024-05-18 at 8.52.45 AM.png" alt=""><figcaption></figcaption></figure>

## Embeddings

Epsilla integrates with Voyage AI with the following embedding models:
Epsilla integrates with VoyageAI by MongoDB with the following embedding models:

| Name | Dimensions |
|--------------------------------------|------------|
| **voyageai/voyage-4-large** | 1024 |
| **voyageai/voyage-4** | 1024 |
| **voyageai/voyage-4-lite** | 1024 |
| **voyageai/voyage-4-nano** | 1024 |
| **voyageai/voyage-code-4** | 1024 |
| **voyageai/voyage-context-4** | 1024 |
| **voyageai/voyage-multimodal-3** | 1024 |
| **voyageai/voyage-context-3** | 1024 |
| **voyageai/voyage-3.5** | 1024 |
| **voyageai/voyage-3.5-lite** | 512 |
| **voyageai/voyage-3-large** | 1024 |
| **voyageai/voyage-3** | 1024 |
| **voyageai/voyage-3-lite** | 512 |
| **voyageai/voyage-code-3** | 1024 |
| **voyageai/voyage-large-2-instruct** | 1024 |
| **voyageai/voyage-finance-2** | 1024 |
| **voyageai/voyage-multilingual-2** | 1024 |
| **voyageai/voyage-law-2** | 1024 |
| **voyageai/voyage-code-2** | 1536 |
| **voyageai/voyage-large-2** | 1536 |
| **voyageai/voyage-2** | 1024 |

For Epsilla open source vector db, you just need to add a header in the data ingestion and semantic search queries [like this](../../vector-database/embeddings.md#voyage-ai-embedding).
## Contextual embeddings

Then you can start using the voyageai embedding models during vector table schema creation:
The **voyageai/voyage-context-4** and **voyageai/voyage-context-3** models are contextualized chunk embedding models: each chunk is embedded with awareness of its surrounding document context. They are served through VoyageAI by MongoDB's `contextualized_embed` API (see the [official spec](https://docs.voyageai.com/docs/contextualized-chunk-embeddings)).

The `inputs` parameter accepts both supported formats:

```
inputs: Union[List[List[str]], List[str]]
```

- `List[List[str]]` — pre-chunked documents, one inner list of chunks per document.
- `List[str]` — a flat list of strings (a single document's chunks, queries, or full documents when auto-chunking is enabled).

```python
import voyageai

vo = voyageai.Client()

# Nested: one inner list of chunks per document
vo.contextualized_embed(
inputs=[["chunk 1 of doc A", "chunk 2 of doc A"], ["chunk 1 of doc B"]],
model="voyage-context-4",
input_type="document",
)

# Flat: a single list of strings
vo.contextualized_embed(
inputs=["chunk 1", "chunk 2", "chunk 3"],
model="voyage-context-4",
input_type="document",
)
```

For Epsilla open source vector db, you just need to add a header in the data ingestion and semantic search queries [like this](../../vector-database/embeddings.md#voyageai-by-mongodb-embedding).

Then you can start using the VoyageAI by MongoDB embedding models during vector table schema creation:

<figure><img src="../../.gitbook/assets/Screenshot 2024-01-31 at 12.10.07 PM.png" alt=""><figcaption></figcaption></figure>
45 changes: 22 additions & 23 deletions vector-database/embeddings.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,39 +286,38 @@ await db.createTable(
{% endtab %}
{% endtabs %}

## Voyage AI Embedding
## VoyageAI by MongoDB Embedding

Epsilla supports these VoyageAI embedding models (learn more about Voyage AI embedding at [https://docs.voyageai.com/docs/embeddings](https://docs.voyageai.com/docs/embeddings)):
Epsilla supports these VoyageAI by MongoDB embedding models (learn more about VoyageAI by MongoDB embedding at [https://docs.voyageai.com/docs/embeddings](https://docs.voyageai.com/docs/embeddings)):

| Name | Dimensions |
| ------------------------------------ | ---------- |
| **voyageai/voyage-large-2-instruct** | 1024 |
| **voyageai/voyage-finance-2** | 1024 |
| **voyageai/voyage-multilingual-2** | 1024 |
| **voyageai/voyage-law-2** | 1024 |
| **voyageai/voyage-code-2** | 1536 |
| **voyageai/voyage-large-2** | 1536 |
| **voyageai/voyage-code-2** | 1536 |
| **voyageai/voyage-2** | 1024 |
| **voyageai/voyage-02** | 1024 |
| **voyageai/voyage-law-2** | 1024 |
| **voyageai/voyage-finance-2** | 1024 |
| **voyageai/voyage-multilingual-2** | 1024 |
| **voyageai/voyage-lite-02-instruct** | 1024 |
| **voyageai/voyage-4-large** | 1024 |
| **voyageai/voyage-4** | 1024 |
| **voyageai/voyage-4-lite** | 1024 |
| **voyageai/voyage-4-nano** | 1024 |
| **voyageai/voyage-code-4** | 1024 |
| **voyageai/voyage-context-4** | 1024 |
| **voyageai/voyage-multimodal-3** | 1024 |
| **voyageai/voyage-context-3** | 1024 |
| **voyageai/voyage-3.5** | 1024 |
| **voyageai/voyage-3.5-lite** | 512 |
| **voyageai/voyage-3-large** | 1024 |
| **voyageai/voyage-3** | 1024 |
| **voyageai/voyage-3-lite** | 512 |
| **voyageai/voyage-code-3** | 1024 |
| **voyageai/voyage-finance-2** | 1024 |
| **voyageai/voyage-law-2** | 1024 |

The **voyageai/voyage-context-4** and **voyageai/voyage-context-3** contextual models are served through VoyageAI by MongoDB's `contextualized_embed` API, whose `inputs` parameter accepts both supported formats — `inputs: Union[List[List[str]], List[str]]` (pre-chunked documents as a nested list, or a flat list of strings). See the [official spec](https://docs.voyageai.com/docs/contextualized-chunk-embeddings).

When using Voyage AI embedding on Docker, make sure provide the **X-VoyageAI-API-Key** header when connecting to the vector database:
When using VoyageAI by MongoDB embedding on Docker, make sure provide the **X-VoyageAI-API-Key** header when connecting to the vector database:

{% tabs %}
{% tab title="Python" %}
```python
db = vectordb.Client(
...
headers={
"X-VoyageAI-API-Key": <Your Voyage AI API key here>
"X-VoyageAI-API-Key": <Your VoyageAI by MongoDB API key here>
}
)
```
Expand All @@ -329,15 +328,15 @@ db = vectordb.Client(
const db = new epsillajs.EpsillaDB({
...
headers: {
"X-VoyageAI-API-Key": <Your Voyage AI API key here>
"X-VoyageAI-API-Key": <Your VoyageAI by MongoDB API key here>
}
});
```
{% endtab %}
{% endtabs %}

{% hint style="info" %}
If you are using Epsilla Cloud, make sure to add [VoyageAI integration](../platform/integrations/voyage-ai.md) instead of passing the header.
If you are using Epsilla Cloud, make sure to add [VoyageAI by MongoDB integration](../platform/integrations/voyage-ai.md) instead of passing the header.
{% endhint %}

And use the embedding model when defining the index:
Expand All @@ -348,7 +347,7 @@ And use the embedding model when defining the index:
status_code, response = db.create_table(
...
indices=[
{"name": "Index", "field": "Doc", "model": "voyageai/voyage-02"}
{"name": "Index", "field": "Doc", "model": "voyageai/voyage-3.5"}
]
)
```
Expand All @@ -359,7 +358,7 @@ status_code, response = db.create_table(
await db.createTable(
...
[
{"name": "Index", "field": "Doc", "model": "voyageai/voyage-02"}
{"name": "Index", "field": "Doc", "model": "voyageai/voyage-3.5"}
]
);
```
Expand Down