diff --git a/.gitignore b/.gitignore index 7af67c9..54107f3 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -.tmp \ No newline at end of file +.tmp +.idea/ diff --git a/docs/embeddings.md b/docs/embeddings.md index 680efb5..981eb3d 100644 --- a/docs/embeddings.md +++ b/docs/embeddings.md @@ -10,17 +10,18 @@ Chroma provides lightweight wrappers around popular embedding providers, making
-| | Python | JS | -|--------------|-----------|---------------| -| [OpenAI](/embeddings/openai) | ✅ | ✅ | -| [Google Generative AI](/embeddings/google-gemini) | ✅ | ✅ | -| [Cohere](/embeddings/cohere) | ✅ | ✅ | -| [Google PaLM](/embeddings/google-palm) | ✅ | ➖ | -| [Hugging Face](/embeddings/hugging-face) | ✅ | ➖ | -| [Instructor](/embeddings/instructor) | ✅ | ➖ | -| [Hugging Face Embedding Server](/embeddings/hugging-face-embedding-server) | ✅ | ✅ | -| [Jina AI](/embeddings/jinaai) | ✅ | ✅ | -| [Roboflow](/embeddings/roboflow-api) | ✅ | ➖ | +| | Python | JS | +|----------------------------------------------------------------------------|--------|----| +| [OpenAI](/embeddings/openai) | ✅ | ✅ | +| [Google Generative AI](/embeddings/google-gemini) | ✅ | ✅ | +| [Cohere](/embeddings/cohere) | ✅ | ✅ | +| [Google PaLM](/embeddings/google-palm) | ✅ | ➖ | +| [Hugging Face](/embeddings/hugging-face) | ✅ | ➖ | +| [Instructor](/embeddings/instructor) | ✅ | ➖ | +| [Hugging Face Embedding Server](/embeddings/hugging-face-embedding-server) | ✅ | ✅ | +| [Jina AI](/embeddings/jinaai) | ✅ | ✅ | +| [Roboflow](/embeddings/roboflow-api) | ✅ | ➖ | +| [Cloudflare Workers AI](/embeddings/cloudflare) | ✅ | ✅ | We welcome pull requests to add new Embedding Functions to the community. diff --git a/docs/embeddings/cloudflare.md b/docs/embeddings/cloudflare.md new file mode 100644 index 0000000..a96f640 --- /dev/null +++ b/docs/embeddings/cloudflare.md @@ -0,0 +1,59 @@ +--- +--- + +# Cloudflare Workers AI + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +
Select a language
+ + + + + + +Chroma provides a convenient wrapper around Cloudflare Workers AI REST API. This embedding function runs remotely on a Cloudflare Workers AI. It requires an API key and an account Id or gateway endpoint. You can get an API key by signing up for an account at [Cloudflare Workers AI](https://cloudflare.com/). + +Visit the [Cloudflare Workers AI documentation](https://developers.cloudflare.com/workers-ai/) for more information on getting started. + +:::note +Currently cloudflare embeddings endpoints allow batches of maximum 100 documents in a single request. The EF has a hard limit of 100 documents per request, and will raise an error if you try to pass more than 100 documents. +::: + + + + +```python +import chromadb.utils.embedding_functions as embedding_functions +cf_ef = embedding_functions.CloudflareWorkersAIEmbeddingFunction( + api_key = "YOUR_API_KEY", + account_id = "YOUR_ACCOUNT_ID", # or gateway_endpoint + model_name = "@cf/baai/bge-base-en-v1.5", + ) +cf_ef(input=["This is my first text to embed", "This is my second document"]) +``` + +You can pass in an optional `model_name` argument, which lets you choose which Cloudflare Workers AI [model](https://developers.cloudflare.com/workers-ai/models/#text-embeddings) to use. By default, Chroma uses `@cf/baai/bge-base-en-v1.5`. + + + + +```javascript +// const {CloudflareWorkersAIEmbeddingFunction} = require('chromadb'); //CJS import +import {CloudflareWorkersAIEmbeddingFunction} from "chromadb"; //ESM import +const embedder = new CloudflareWorkersAIEmbeddingFunction({ + apiToken: 'YOUR_API_KEY', + accountId: "YOUR_ACCOUNT_ID", // or gatewayEndpoint + model: '@cf/baai/bge-base-en-v1.5', +}); + +// use directly +const embeddings = embedder.generate(['document1', 'document2']); + +// pass documents to query for .add and .query +const collection = await client.createCollection({name: "name", embeddingFunction: embedder}) +const collectionGet = await client.getCollection({name:"name", embeddingFunction: embedder}) +``` + + diff --git a/sidebars.js b/sidebars.js index 0f613ab..457ddda 100644 --- a/sidebars.js +++ b/sidebars.js @@ -95,6 +95,7 @@ const sidebars = { 'embeddings/roboflow-api', 'embeddings/hugging-face-embedding-server', 'embeddings/jinaai', + 'embeddings/cloudflare', ], }, ],