代码

from agno.agent import Agent
from agno.embedder.ollama import OllamaEmbedder
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.models.ollama import Ollama
from agno.storage.sqlite import SqliteStorage
from agno.vectordb.lancedb import LanceDb

# 定义将存储向量数据库的数据库 URL
db_url = "/tmp/lancedb"

# 配置语言模型
model = Ollama(id="llama3.1:8b")

# 创建 Ollama 嵌入器
embedder = OllamaEmbedder(id="nomic-embed-text", dimensions=768)

# 创建向量数据库
vector_db = LanceDb(
    table_name="recipes",  # 向量数据库中的表名
    uri=db_url,  # 初始化/创建向量数据库的位置
    embedder=embedder,  # 不使用此项,将默认使用 OpenAI Chat 嵌入器
)

# 使用 LanceDb 进行向量存储和 OllamaEmbedder 进行嵌入,从 PDF URL 创建知识库
knowledge_base = PDFUrlKnowledgeBase(
    urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
    vector_db=vector_db,
)

# 加载知识库,如果它已存在于 Vector LanceDB 中,则不重新创建
knowledge_base.load(recreate=False)

# 设置代理数据的 SQL 存储
storage = SqliteStorage(table_name="recipes", db_file="data.db")
storage.create()  # 如果存储不存在,则创建它

# 初始化 Agent,并配置各种设置,包括知识库和存储
agent = Agent(
    session_id="session_id",  # 使用任何唯一的标识符来识别运行
    user_id="user",  # 用户标识符,用于识别用户
    model=model,
    knowledge=knowledge_base,
    storage=storage,
    show_tool_calls=True,
    debug_mode=True,  # 启用调试模式以获取额外信息
)

# 使用 agent 生成并打印对查询的响应,格式化为 Markdown
agent.print_response(
    "根据知识库,制作 Gluai Buat Chi 的第一步是什么?",
    markdown=True,
)

用法

1

创建虚拟环境

打开 Terminal 并创建一个 python 虚拟环境。

python3 -m venv .venv
source .venv/bin/activate
2

安装 Ollama

请遵循 Ollama 网站 上的安装说明

3

安装库

pip install -U lancedb sqlalchemy agno
4

运行 Agent

python cookbook/agent_concepts/rag/rag_with_lance_db_and_sqlite.py