Weaviate

Code

1from kern.agent import Agent
2from kern.knowledge.knowledge import Knowledge
3from kern.vectordb.search import SearchType
4from kern.vectordb.weaviate import Weaviate
5from kern.vectordb.weaviate.index import Distance, VectorIndex
6
7vector_db = Weaviate(
8 collection="vectors",
9 search_type=SearchType.vector,
10 vector_index=VectorIndex.HNSW,
11 distance=Distance.COSINE,
12 local=False, # Set to True if using Weaviate locally
13)
14
15# Create Knowledge Instance with Weaviate
16knowledge = Knowledge(
17 name="Basic SDK Knowledge Base",
18 description="Kern 2.0 Knowledge Implementation with Weaviate",
19 vector_db=vector_db,
20)
21
22knowledge.insert(
23 name="Recipes",
24 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
25 metadata={"doc_type": "recipe_book"},
26 skip_if_exists=True,
27)
28
29# Create and use the agent
30agent = Agent(knowledge=knowledge)
31agent.print_response("List down the ingredients to make Massaman Gai", markdown=True)
32
33# Delete operations
34vector_db.delete_by_name("Recipes")
35# or
36vector_db.delete_by_metadata({"doc_type": "recipe_book"})

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 weaviate-client pypdf openai kern-ai

Setup Weaviate

1# 1. Create account at https://console.weaviate.cloud/
2# 2. Create a cluster and copy the "REST endpoint" and "Admin" API Key
3# 3. Set environment variables:
4export WCD_URL="your-cluster-url"
5export WCD_API_KEY="your-api-key"
6# 4. Set local=False in the code
1# 1. Install Docker from https://docs.docker.com/get-docker/
2# 2. Run Weaviate locally:
3docker run -d \
4 -p 8080:8080 \
5 -p 50051:50051 \
6 --name weaviate \
7 cr.weaviate.io/semitechnologies/weaviate:1.28.4
8# 3. Set local=True in the code

Set environment variables

1export OPENAI_API_KEY=xxx

Run Agent

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