SingleStore Vector Database
Use SingleStore as a vector database for your Knowledge Base.
Setup
1docker run -d --name singlestoredb \2 -p 3306:3306 \3 -p 8080:8080 \4 -e ROOT_PASSWORD=admin \5 -e SINGLESTORE_DB=AGNO \6 -e SINGLESTORE_USER=root \7 -e SINGLESTORE_PASSWORD=password \8 singlestore/cluster-in-a-box910docker start singlestoredbAfter running the container, set the environment variables:
1export SINGLESTORE_HOST="localhost"2export SINGLESTORE_PORT="3306"3export SINGLESTORE_USERNAME="root"4export SINGLESTORE_PASSWORD="admin"5export SINGLESTORE_DATABASE="AGNO"SingleStore supports both cloud-based and local deployments. For step-by-step guidance on setting up your cloud deployment, please refer to the SingleStore Setup Guide.
Example
1import typer2from typing import Optional3from os import getenv45from sqlalchemy.engine import create_engine67from kern.agent import Agent8from kern.knowledge.knowledge import Knowledge9from kern.vectordb.singlestore import SingleStore1011USERNAME = getenv("SINGLESTORE_USERNAME")12PASSWORD = getenv("SINGLESTORE_PASSWORD")13HOST = getenv("SINGLESTORE_HOST")14PORT = getenv("SINGLESTORE_PORT")15DATABASE = getenv("SINGLESTORE_DATABASE")16SSL_CERT = getenv("SINGLESTORE_SSL_CERT", None)1718db_url = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8mb4"19if SSL_CERT:20 db_url += f"&ssl_ca={SSL_CERT}&ssl_verify_cert=true"2122db_engine = create_engine(db_url)2324knowledge_base = Knowledge(25 vector_db=SingleStore(26 collection="recipes",27 db_engine=db_engine,28 schema=DATABASE,29 ),30)3132def pdf_assistant(user: str = "user"):33 run_id: Optional[str] = None3435 agent = Agent(36 user_id=user,37 knowledge=knowledge_base,38 # Uncomment the following line to use traditional RAG39 # add_knowledge_to_context=True,40 )41 if run_id is None:42 run_id = agent.run_id43 print(f"Started Run: {run_id}\n")44 else:45 print(f"Continuing Run: {run_id}\n")4647 while True:48 agent.cli_app(markdown=True)4950if __name__ == "__main__":51 # Comment out after first run52 knowledge_base.insert(53 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"54 )5556 typer.run(pdf_assistant)SingleStore Params
| Parameter | Type | Default | Description |
|---|---|---|---|
collection | str | - | The name of the collection to use. |
schema | Optional[str] | "ai" | The database schema to use. |
db_url | Optional[str] | None | The database connection URL. |
db_engine | Optional[Engine] | None | SQLAlchemy engine instance. |
embedder | Embedder | OpenAIEmbedder() | The embedder to use for creating vector embeddings. |
distance | Distance | Distance.cosine | The distance metric to use for similarity search. |