Setup
uv pip install lancedb
Example
agent_with_knowledge.py
import typer
from typing import Optional
from rich.prompt import Prompt
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.lancedb import LanceDb
from agno.vectordb.search import SearchType
# LanceDB Vector DB
vector_db = LanceDb(
table_name="recipes",
uri="/tmp/lancedb",
search_type=SearchType.keyword,
)
# Knowledge Base
knowledge_base = Knowledge(
vector_db=vector_db,
)
def lancedb_agent(user: str = "user"):
agent = Agent(
knowledge=knowledge_base,
debug_mode=True,
)
while True:
message = Prompt.ask(f"[bold] :sunglasses: {user} [/bold]")
if message in ("exit", "bye"):
break
agent.print_response(message, session_id=f"{user}_session")
if __name__ == "__main__":
# Comment out after first run
knowledge_base.insert(
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
)
typer.run(lancedb_agent)
Async Support ⚡
LanceDB also supports asynchronous operations, enabling concurrency and leading to better performance.
async_lance_db.py
# install lancedb - `pip install lancedb`
import asyncio
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.lancedb import LanceDb
# Initialize LanceDB
vector_db = LanceDb(
table_name="recipes",
uri="tmp/lancedb", # You can change this path to store data elsewhere
)
# Create knowledge base
knowledge_base = Knowledge(
vector_db=vector_db,
)
agent = Agent(knowledge=knowledge_base, debug_mode=True)
if __name__ == "__main__":
# Load knowledge base asynchronously
asyncio.run(knowledge_base.ainsert(
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
)
)
# Create and use the agent asynchronously
asyncio.run(agent.aprint_response("How to make Tom Kha Gai", markdown=True))
Use
aload() and aprint_response() methods with asyncio.run() for non-blocking operations in high-throughput applications.LanceDb Params
| Parameter | Type | Default | Description |
|---|---|---|---|
uri | str | - | The URI to connect to. |
table | LanceTable | - | The Lance table to use. |
table_name | str | - | The name of the table to use. |
connection | DBConnection | - | The database connection to use. |
api_key | str | - | The API key to use. |
embedder | Embedder | - | The embedder to use. |
search_type | SearchType | vector | The search type to use. |
distance | Distance | cosine | The distance to use. |
nprobes | int | - | The number of probes to use. More Info |
reranker | Reranker | - | The reranker to use. More Info |
use_tantivy | bool | - | Whether to use tantivy. |