An API to easily connect your data to ChatGPT
Project description
Embedbase
An API to easily connect your data to ChatGPT
Open-source sdk & api to easily connect data to ChatGPT
Used by AVA and serving 100k request a day
Try the sandbox playground now · Request Feature · Report BugCheck out the docs for more info.
Table of Contents
What are people building
- AVA uses Embedbase to help their users find related notes
- Solpilot uses Embedbase to put smart contract integration on autopilot
- ChatGPT-powered search for markdown documentation
Getting started
docker-compose -f docker-compose-postgres-standalone.yml up
from embedbase import get_app
from embedbase.database.postgres_db import Postgres
from embedbase.embedding.openai import OpenAI
async def custom_middleware(request, call_next):
# customise as you prefer :)
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response
app = (
get_app()
.use_middleware(custom_middleware)
.use_embedder(OpenAI("<your key>"))
.use_db(Postgres())
).run()
uvicorn main:app
🔥 Embedbase now runs! Time to ship your product
Managed Instance
The fastest way to get started with Embedbase is signing up for free to Embedbase Cloud.
How to use
SDK
npm i embedbase-js
import { createClient } from 'embedbase-js'
const question = 'What can I do with Embedbase API?'
const embedbase = createClient(
'https://api.embedbase.xyz',
'api-key')
const context = await embedbase
.dataset('embedbase-docs')
.createContext('What can I do with Embedbase API?', { limit: 3 });
console.log(context)
[
"Embedbase API allows to store unstructured data...",
"Embedbase API has 3 main functions a) provides a plug and play solution to store embeddings b) makes it easy to connect to get the right data into llms c)..",
"Embedabase API is self-hostable...",
]
// refer to https://github.com/openai/openai-node for the exact api
openai.createCompletion(
`Write a response to question: ${question}
based on the follwing context ${context.toString()}`
)
// answer:
// You can use the Embedbase API to store unstructured data and then use the data to connect it to LLMs
Inserting data
const URL = 'http://localhost:8000'
const VAULT_ID = 'people'
// if using the hosted version
const API_KEY = '<https://app.embedbase.xyz/signup>'
fetch(`${URL}/v1/${VAULT_ID}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// if using the hosted version, uncomment
// 'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
documents: [{
data: 'Elon is sipping a tea on Mars',
}],
}),
});
Searching
fetch(`${URL}/v1/${VAULT_ID}/search`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// 'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
query: 'Something about a red planet',
}),
});
Result:
{
"query": "Something about a red planet",
"similarities": [
{
"score": 0.828773,
"id": "ABCU75FEBE",
"data": "Elon is sipping a tea on Mars",
}
]
}
Docs and support
Check out our tutorials for step-by-step guides, how-to's, and best practices, our documentation is powered by ChatGPT, so you can ask question directly.
Ask a question in our Discord community to get support.
Contributing
We recommend using Gitpod for development.
Current Stack
- Embeddings
- openai embeddings
- cohere embeddings
- Google PaLM embeddings
- local (BERT, etc.)
- Vector database
- fastapi
- Authentication (optional)
Open-source vs hosted
This repo is available under the MIT license.
To learn more, book a demo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.