SingleStore Async

Code

1import asyncio
2from os import getenv
3
4from kern.agent import Agent
5from kern.knowledge.knowledge import Knowledge
6from kern.vectordb.singlestore import SingleStore
7from sqlalchemy.engine import create_engine
8
9USERNAME = getenv("SINGLESTORE_USERNAME")
10PASSWORD = getenv("SINGLESTORE_PASSWORD")
11HOST = getenv("SINGLESTORE_HOST")
12PORT = getenv("SINGLESTORE_PORT")
13DATABASE = getenv("SINGLESTORE_DATABASE")
14SSL_CERT = getenv("SINGLESTORE_SSL_CERT", None)
15
16db_url = (
17 f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8mb4"
18)
19if SSL_CERT:
20 db_url += f"&ssl_ca={SSL_CERT}&ssl_verify_cert=true"
21
22db_engine = create_engine(db_url)
23
24vector_db = SingleStore(
25 collection="recipes",
26 db_engine=db_engine,
27 schema=DATABASE,
28)
29
30knowledge = Knowledge(name="My SingleStore Knowledge Base", vector_db=vector_db)
31
32agent = Agent(
33 knowledge=knowledge,
34 search_knowledge=True,
35 read_chat_history=True,
36)
37
38if __name__ == "__main__":
39 asyncio.run(
40 knowledge.ainsert(
41 name="Recipes",
42 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
43 metadata={"doc_type": "recipe_book"},
44 )
45 )
46
47 asyncio.run(
48 agent.aprint_response("How do I make pad thai?", markdown=True)
49 )

Usage

Set up your virtual environment

1uv venv --python 3.12
2source .venv/bin/activate
1uv venv --python 3.12
2.venv\Scripts\activate

Install dependencies

1uv pip install -U PyMySQL sqlalchemy pypdf openai kern-ai

Run SingleStore

1docker run -d --name singlestoredb \
2--platform linux/amd64 \
3-p 3306:3306 \
4-p 8080:8080 \
5-v /tmp:/var/lib/memsql \
6-e ROOT_PASSWORD=admin \
7-e SINGLESTORE_DB=AGNO \
8-e SINGLESTORE_USER=root \
9-e SINGLESTORE_PASSWORD=admin \
10-e LICENSE_KEY=accept \
11ghcr.io/singlestore-labs/singlestoredb-dev:latest
12
13docker start singlestoredb
14
15docker exec singlestoredb memsql -u root -padmin -e "CREATE DATABASE IF NOT EXISTS AGNO;"

Set environment variables

1export SINGLESTORE_HOST="localhost"
2export SINGLESTORE_PORT="3306"
3export SINGLESTORE_USERNAME="root"
4export SINGLESTORE_PASSWORD="admin"
5export SINGLESTORE_DATABASE="AGNO"
6export SINGLESTORE_SSL_CA=".certs/singlestore_bundle.pem"
7export OPENAI_API_KEY=xxx

Run Agent

1python cookbook/08_knowledge/vector_db/singlestore_db/singlestore_db.py