From 3eacbe082cc7b3ca28f41be44626173fd1d7cbc1 Mon Sep 17 00:00:00 2001 From: Attila Toth Date: Tue, 14 Jul 2026 13:48:56 +0200 Subject: [PATCH] docs: add ScyllaDB vector store page --- _snippets/vectordb_scylladb_params.mdx | 6 + docs.json | 12 ++ knowledge/vector-stores/index.mdx | 8 + knowledge/vector-stores/scylladb/overview.mdx | 158 ++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 _snippets/vectordb_scylladb_params.mdx create mode 100644 knowledge/vector-stores/scylladb/overview.mdx diff --git a/_snippets/vectordb_scylladb_params.mdx b/_snippets/vectordb_scylladb_params.mdx new file mode 100644 index 000000000..2d058656e --- /dev/null +++ b/_snippets/vectordb_scylladb_params.mdx @@ -0,0 +1,6 @@ +| Parameter | Type | Default | Description | +| ------------------ | -------------------- | ----------------- | --------------------------------------------------------------------------------- | +| `table_name` | `str` | `None` | Name of the table to store vectors and metadata | +| `keyspace` | `str` | `None` | Keyspace name where the table will be created | +| `embedder` | `Optional[Embedder]` | `OpenAIEmbedder()` | Embedder instance to generate embeddings | +| `session` | `CassandraSession` | `None` | Active ScyllaDB session object for database operations | diff --git a/docs.json b/docs.json index 3cc6026d9..7ad4bb64a 100644 --- a/docs.json +++ b/docs.json @@ -923,6 +923,12 @@ } ] }, + { + "group": "ScyllaDB", + "pages": [ + "knowledge/vector-stores/scylladb/overview" + ] + }, { "group": "Clickhouse", "pages": [ @@ -4312,6 +4318,12 @@ } ] }, + { + "group": "ScyllaDB", + "pages": [ + "knowledge/vector-stores/scylladb/overview" + ] + }, { "group": "Clickhouse", "pages": [ diff --git a/knowledge/vector-stores/index.mdx b/knowledge/vector-stores/index.mdx index 0bce4010e..921d4d88f 100644 --- a/knowledge/vector-stores/index.mdx +++ b/knowledge/vector-stores/index.mdx @@ -132,6 +132,14 @@ Agno supports the following vector database providers organized by category: > SurrealDB multi-model with vectors. + + ScyllaDB high-performance distributed vector search. + ### Local Vector Databases diff --git a/knowledge/vector-stores/scylladb/overview.mdx b/knowledge/vector-stores/scylladb/overview.mdx new file mode 100644 index 000000000..7a891e103 --- /dev/null +++ b/knowledge/vector-stores/scylladb/overview.mdx @@ -0,0 +1,158 @@ +--- +title: ScyllaDB Vector Database +sidebarTitle: Overview +description: Use ScyllaDB as a vector database for your Knowledge Base. +--- + +ScyllaDB is a high-performance, real-time distributed database with low-latency +reads/writes and vector similarity search. It is compatible with Apache Cassandra, +so Agno's `Cassandra` integration works with ScyllaDB out of the box. + +## Setup + +Install the driver + +```shell +uv pip install scylla-driver cassio +``` + +Run ScyllaDB + +```shell +docker run -d \ + --name scylla \ + -p 9042:9042 \ + scylladb/scylla:latest \ + --developer-mode=1 \ + --enable-cassio-compatibility=1 +``` + + + `--enable-cassio-compatibility=1` is required for self-hosted ScyllaDB. + + +## Example + +```python agent_with_knowledge.py +import os + +from cassandra.cluster import Cluster + +from agno.agent import Agent +from agno.knowledge.embedder.openai import OpenAIEmbedder +from agno.knowledge.knowledge import Knowledge +from agno.models.openai import OpenAIResponses +from agno.vectordb.cassandra import Cassandra + +SCYLLA_HOST = "127.0.0.1" +SCYLLA_PORT = 9042 +KEYSPACE = "agno_knowledge" + +cluster = Cluster([SCYLLA_HOST], port=SCYLLA_PORT) +session = cluster.connect() +session.execute( + f""" + CREATE KEYSPACE IF NOT EXISTS {KEYSPACE}; + """ +) + +embedder = OpenAIEmbedder(id="text-embedding-3-small", dimensions=1024) + +knowledge_base = Knowledge( + vector_db=Cassandra( + table_name="recipes", + keyspace=KEYSPACE, + session=session, + embedder=embedder, + ), +) + +knowledge_base.insert( + url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf" +) + +agent = Agent( + model=OpenAIResponses(id="gpt-4o"), + knowledge=knowledge_base, + search_knowledge=True, + markdown=True, +) + +agent.print_response("What Thai recipes do you know?", stream=True) +``` + + +
+

+ ScyllaDB also supports asynchronous operations, enabling concurrency and leading to better performance. +

+ + ```python async_scylladb.py + import asyncio + import os + + from agno.agent import Agent + from agno.knowledge.embedder.openai import OpenAIEmbedder + from agno.knowledge.knowledge import Knowledge + from agno.models.openai import OpenAIResponses + from agno.vectordb.cassandra import Cassandra + + try: + from cassandra.cluster import Cluster # type: ignore + except (ImportError, ModuleNotFoundError): + raise ImportError( + "Could not import scylla-driver. Install it with: uv pip install scylla-driver cassio" + ) + + SCYLLA_HOST = "127.0.0.1" + SCYLLA_PORT = 9042 + KEYSPACE = "agno_knowledge" + + cluster = Cluster([SCYLLA_HOST], port=SCYLLA_PORT) + session = cluster.connect() + session.execute( + f""" + CREATE KEYSPACE IF NOT EXISTS {KEYSPACE} + WITH REPLICATION = {{ 'class': 'SimpleStrategy', 'replication_factor': 1 }} + AND tablets = {{ 'enabled': false }} + """ + ) + + embedder = OpenAIEmbedder(id="text-embedding-3-small", dimensions=1024) + + knowledge_base = Knowledge( + vector_db=Cassandra( + table_name="recipes", + keyspace=KEYSPACE, + session=session, + embedder=embedder, + ), + ) + + agent = Agent( + model=OpenAIResponses(id="gpt-4o"), + knowledge=knowledge_base, + ) + + if __name__ == "__main__": + asyncio.run( + knowledge_base.ainsert( + url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf" + ) + ) + + asyncio.run( + agent.aprint_response("What Thai recipes do you know?", markdown=True) + ) + ``` + + + Use ainsert() and aprint_response() with asyncio.run() for + non-blocking operations in high-throughput applications. + +
+
+ +## ScyllaDB Params + +