mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-14 15:52:26 +00:00
Move the public website pages into `docs/web` beside the SDK, with
shared navigation and executable example sources in `docs/web-tests`.
The combined website is assembled by
[lancedb/docs#355](https://github.com/lancedb/docs/pull/355), with six
Enterprise replacements from
[lancedb/sophon#7681](https://github.com/lancedb/sophon/pull/7681).
This includes Function guidance, runnable Quickstarts, regenerated
snippets, production contact/demo fixes, the legacy SQL route, and the
LeRobot redirect. LeRobot remains attributed to Geneva; all 34 Geneva
pages remain in the docs repository until Function officially launches.
Materialized-view guidance follows the full rebuild refresh introduced
by #4373: local refresh writes the complete result, has no `full`
argument, supports `source_version`, and no longer requires stable row
IDs. Deployment SQL refresh options and stable-ID setup are qualified by
version/configuration. Function input guidance distinguishes ordinary
stored columns from computed inputs supported by newer deployments.
**Validation:** independently accepted local checks include 95 Python
tests (real Enterprise excluded), eight TypeScript tests, Rust
Quickstart, snippet parity, typos, deterministic assembly, Mint
validation and links/anchors/redirects. The combined baseline retains
all 181 production routes and 17 legacy redirects. Examples ran locally
against source-built Python SDK 0.40.0b13; existing GitHub workflows do
not run `docs/web-tests`. New main at `069b2f7d` is 0.41.0b0 and adds
computed Function inputs; that SDK was not exercised by the accepted
tests. Latest prose corrections receive focused site validation.
**Merge/rollout:** merge this and #7681 before #355's combined CI, which
reads producer `main`. This is migration infrastructure: section
overlays, source-owned skills and automatic versioned paired releases
remain follow-ups. The current manual publisher is transitional. Hosted
validation, a supported SDK/Enterprise release pair and a real
Enterprise walkthrough remain pending.
Production Mintlify watches `lancedb/docs:deploy-freeze`, directory
`docs`; preserve that source through review. The separate SDK GitHub
Pages reference workflow rebuilds on main merges.
**Updated-head CI (9a50f8db):**
[Typos](https://github.com/lancedb/lancedb/actions/runs/37654185443/job/112904990558),
[PR
title](https://github.com/lancedb/lancedb/actions/runs/37654179507/job/112904974595)
and
[Aikido](https://app.aikido.dev/featurebranch/scan/215386145?groupId=74229)
pass. Critical findings in the example lockfiles were patched: all Sharp
copies use 0.35.5, protobufjs 7.6.6, tar 7.5.22, quinn-proto 0.11.19,
zerovec 0.11.8 and zerovec-derive 0.11.6. The SDK's product dependencies
are unchanged. The revised lockfiles pass eight TypeScript examples,
HuggingFace decode/resize/crop/rescale/normalize plus AVIF roundtrip,
and Rust Quickstart. Aikido passing does not mean every advisory is
cleared; npm still reports 29 high and five moderate advisories in the
example dependency graph. No scanner bypass or suppression was added.
The Function prose correction passes combined/standalone Mint,
deterministic assembly, routes and assets. The revised 325-file site
checksum is
`175bec06864abb400dd292e667ba93448c0479b8359fd7bf6146afabf9040647`. This
PR remains open for independent review; further merges are on hold.
---------
Co-authored-by: Brendan Clement <brendan.clement@lancedb.com>
152 lines
9.7 KiB
Plaintext
152 lines
9.7 KiB
Plaintext
---
|
|
title: "Agno"
|
|
sidebarTitle: "Agno"
|
|
description: "Build a search assistant using the Agno agent framework with LanceDB as the knowledge backend."
|
|
---
|
|
|
|
import {
|
|
PyFrameworksAgnoAgent,
|
|
PyFrameworksAgnoCliChat,
|
|
PyFrameworksAgnoIngestYoutube,
|
|
PyFrameworksAgnoSetup,
|
|
} from '/snippets/integrations.mdx';
|
|
|
|
[Agno](https://docs.agno.com/introduction) is a framework for building agentic AI applications.
|
|
It supports LanceDB as a knowledge backend, allowing you to easily ingest and retrieve external content for your agents.
|
|
|
|
When you pair Agno's `Knowledge` system with LanceDB, you get a clean Agentic RAG setup.
|
|
We'll walk through the steps below to build a YouTube transcript-aware Agno assistant that can:
|
|
- Ingest a transcript from a YouTube video via the YouTube API
|
|
- Store embeddings and metadata in LanceDB
|
|
- Retrieve context during responses with hybrid search
|
|
- Ask questions about the video content in a CLI chat loop
|
|
|
|
## Prerequisites {#prerequisites}
|
|
|
|
Install dependencies:
|
|
|
|
<CodeGroup>
|
|
```bash pip icon="terminal"
|
|
pip install -U agno openai lancedb youtube-transcript-api beautifulsoup4
|
|
```
|
|
|
|
```bash uv icon="terminal"
|
|
uv add agno openai lancedb youtube-transcript-api beautifulsoup4
|
|
```
|
|
</CodeGroup>
|
|
|
|
## Step 1: Configure LanceDB-backed knowledge {#step-1-configure-lancedb-backed-knowledge}
|
|
|
|
First, you can initialize the core `Knowledge` object that your agent will use for retrieval.
|
|
It configures LanceDB as the vector store, enables hybrid search with native LanceDB FTS, and sets the embedding model.
|
|
|
|
<CodeBlock filename="Python" language="Python" icon="python">
|
|
{PyFrameworksAgnoSetup}
|
|
</CodeBlock>
|
|
|
|
## Step 2: Fetch and ingest the YouTube transcript {#step-2-fetch-and-ingest-the-youtube-transcript}
|
|
|
|
Next, extract a YouTube video ID, fetch the full transcript, and flatten it into text for indexing.
|
|
The snippet shown below then inserts that transcript text into the Agno knowledge base, which writes vectors and metadata to LanceDB.
|
|
|
|
<CodeBlock filename="Python" language="Python" icon="python">
|
|
{PyFrameworksAgnoIngestYoutube}
|
|
</CodeBlock>
|
|
|
|
<Info>
|
|
This path explicitly fetches the transcript first, then inserts transcript text into LanceDB through Agno.
|
|
</Info>
|
|
|
|
## Step 3: Create an Agno agent with knowledge search {#step-3-create-an-agno-agent-with-knowledge-search}
|
|
|
|
The next step is to construct an Agno `Agent` and attach the knowledge base you just populated.
|
|
With `search_knowledge=True`, the agent performs retrieval before answering, so responses stay grounded in transcript context.
|
|
|
|
In Agno, retrieval is exposed as a tool call that the model can invoke at runtime.
|
|
When `search_knowledge=True`, Agno makes a knowledge-search tool (shown in output as `search_knowledge_base(...)`) available to the model; the model decides when to call it, Agno executes the tool, and the returned context is fed back into the final answer.
|
|
|
|
<CodeBlock filename="Python" language="Python" icon="python">
|
|
{PyFrameworksAgnoAgent}
|
|
</CodeBlock>
|
|
|
|
## Step 4: Start a CLI chat loop {#step-4-start-a-cli-chat-loop}
|
|
|
|
You can now ask an initial question and then start an interactive loop for follow-up queries.
|
|
Each prompt runs through the same retrieval pipeline, so you can iteratively inspect what the transcript contains.
|
|
|
|
<CodeBlock filename="Python" language="Python" icon="python">
|
|
{PyFrameworksAgnoCliChat}
|
|
</CodeBlock>
|
|
|
|
<Info>
|
|
Want local-first inference? Replace OpenAI model/embedder classes with Agno's Ollama providers. See Agno's Ollama knowledge examples: [docs.agno.com/examples/models/ollama/chat/knowledge](https://docs.agno.com/examples/models/ollama/chat/knowledge).
|
|
</Info>
|
|
|
|
### Question 1 {#question-1}
|
|
|
|
The following question is asked in the CLI chat loop:
|
|
```
|
|
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ Q: What kinds of data can LanceDB handle? ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ • search_knowledge_base(query=What kinds of data can LanceDB handle?) ┃
|
|
┃ • search_knowledge_base(query=LanceDB images audio video handle kinds of data ┃
|
|
┃ can handle 'LanceDB can handle' 'kinds of data' 'images audio video' transcript) ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
┏━ Response (19.1s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ ┃
|
|
┃ • Images, audio, video — i.e., multimodal AI data and “all manners of things ┃
|
|
┃ you don't put into traditional databases” (per the transcript). ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
```
|
|
|
|
We get the response based on the transcript's contents as expected.
|
|
|
|
### Question 2 {#question-2}
|
|
|
|
Let's ask a more specific question about the CEO of LanceDB, which is also in the transcript:
|
|
|
|
```
|
|
You: What is the name of the CEO of LanceDB?
|
|
INFO Found 10 documents
|
|
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ What is the name of the CEO of LanceDB? ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ • search_knowledge_base(query=CEO of LanceDB) ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
┏━ Response (16.7s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
┃ ┃
|
|
┃ ┃
|
|
┃ • According to the retrieved YouTube transcript/title, the CEO of LanceDB is ┃
|
|
┃ Chang She. ┃
|
|
┃ ┃
|
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
```
|
|
|
|
We get the response based on the transcript's contents and title as expected.
|
|
|
|
## Why this works well {#why-this-works-well}
|
|
|
|
To start, LanceDB OSS can run from a local directory, so transcript data can stay on your machine when you are using the OSS stack.
|
|
|
|
- You do not need to maintain a separate transcript parser in your application code.
|
|
- You do not need to hand-roll chunking and retrieval orchestration across multiple modules.
|
|
- One explicit Agno `Knowledge` object, backed by LanceDB, defines both ingestion and search behavior in one place.
|
|
- Fewer moving parts means the tutorial stays readable and the same pattern is easier to carry into production code.
|
|
|
|
As your application needs grow, you can migrate to LanceDB [Enterprise](/enterprise) for
|
|
convenience features like automatic compaction and reindexing and the ability to scale to
|
|
really large datasets.
|