Vector Databases¶
A vector database stores text in a way that lets you search by meaning instead of exact keywords. “analyze revenue” finds “sales analysis” because they mean similar things.
Weaviate in ABI-Core¶
ABI-Core uses Weaviate. It’s included automatically when you add the Semantic Layer:
abi-core create project my-app --with-semantic-layer
# Weaviate runs on port 8080 (mapped to 8081 on host)
What it stores¶
Collection |
Content |
|---|---|
AgentCards |
Agent descriptions + capabilities (for discovery) |
ToolRegistry |
Tool descriptions + schemas (for tool search) |
Custom |
Your documents (if you extend the Semantic Layer) |
How data gets in¶
At startup, the Semantic Layer:
Reads JSON files from
agent_cards/andtool_cards/Generates embeddings using
nomic-embed-text:v1.5(via Ollama)Upserts into Weaviate collections
Skips cards that are already stored (deduplication by URI)
Check Weaviate¶
# Is it ready?
curl http://localhost:8081/v1/.well-known/ready
# What's stored?
curl http://localhost:8081/v1/objects?limit=5
Direct access (advanced)¶
If you need to interact with Weaviate directly:
import weaviate
client = weaviate.Client("http://localhost:8081")
# Query objects
result = client.query.get("AgentCards", ["text", "uri"]).with_limit(5).do()
But for most use cases, use MCPToolkit instead — it handles auth and sessions for you.