Vanna 2.0
网上的资源多是之前版本的,使用2.0有所不同
agent --<llm tools memory >
User
agent--- LLM Tool Database memory
Servers
Vanna三个主要基础设施
Database ,即需要进行查询的关系型数据库
VectorDB ,即需要存放RAG“模型”的向量库
LLM ,即需要使用的大语言模型,用来执行Text2SQL任务
安装
pip install vanna[chromadb,openai,duckdb,mysql]
1.模型
class OllamaLlmService(LlmService) src/vanna/integrations/ollama/llm.py
class OpenAILlmService(LlmService): src/vanna/integrations/openai/llm.py
2.向量数据库
class DemoAgentMemory(AgentMemory) src/vanna/integrations/local/agent_memory/in_memory.py
class MarqoAgentMemory(AgentMemory) src/vanna/integrations/marqo/agent_memory.py 向量数据库 Marqo
class MilvusAgentMemory(AgentMemory): src/vanna/integrations/milvus/agent_memory.py
src/vanna/integrations/opensearch/agent_memory.py
src/vanna/integrations/pinecone/agent_memory.py
class CloudAgentMemory(AgentMemory): src/vanna/integrations/premium/agent_memory/premium.py
class QdrantAgentMemory(AgentMemory) src/vanna/integrations/qdrant/agent_memory.py
src/vanna/integrations/weaviate/agent_memory.py
Vanna已经内置支持的LLM和VectorDB。OpenAI_Chat和 ChromaDB_VectorStore
Chroma 轻量级、Python原生、快速原型开发 中小团队MVP验证 单机百万级,延迟200ms 开源免费
Qdrant Rust内存安全、标量过滤、稀疏向量支持 高并发实时检索 单节点百万级QPS,延迟<50ms 开源免费,云托管
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
ChromaDB 支持两种主要模式:
持久化模式(PersistentClient):数据存本地文件夹。
内存模式(HttpClient/Ephemeral):数据只在内存,重启丢失。
3.数据库
class MySQLRunner(SqlRunner): src/vanna/integrations/mysql/sql_runner.py
src/vanna/integrations/oracle/sql_runner.py
src/vanna/integrations/postgres/sql_runner.py
### Import MySQL tool
from vanna.tools import RunSqlTool
from vanna.integrations.mysql import MySQLRunner
# Set up database connection
db_tool = RunSqlTool(
sql_runner=MySQLRunner(
host="localhost",
database="your_database",
user="your_user",
password="your_password",
port=3306
)
)
使用示例
vanna安装:pip install vanna,可选扩展如 vanna[chromadb,ollama,mysql] 支持本地化部署。
连接数据库:自定义 run_sql 方法(如 MySQL 需通过 mysql.connector 返回 Pandas DataFrame)。
训练模型:通过 DDL、文档或 SQL 示例训练,
例如:vn.train(ddl=“CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100))”)。
这些例子是过去版本的了,新版本使用了agent的方式
提问与查询:调用 vn.ask(“查询销售额最高的产品”),生成并执行 SQL
在线的方式CDN 版本加载的是什么?
https://cdn.tailwindcss.com 实际做了什么?
直接在浏览器端生成完整版 Tailwind CSS
包含:
所有颜色
所有 spacing
所有 responsive 变体
所有 hover / focus / dark 等状态
最终结果:
一个通常 超过 3MB(未压缩) 的 CSS 文件
CDN 模式下: 浏览器运行时生成 CSS
实质上意味着您可以指示浏览器首先使用默认浏览器的字体,直到Google字体文件可用。当浏览器完成下载谷歌字体文件时,它会交换显示并使用谷歌字体。
报错
新版 Chroma(>=0.5.x)默认就是:all-MiniLM-L6-v2
Chroma Embeddings算法是一种用于生成文本嵌入向量(text embeddings)的方法,主要在ChromaDB中应用
~/.cache/huggingface/hub/
from chromadb.utils import embedding_functions
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
model_name="text-embedding-ada-002")
openai API端点URL:
https://api.openai.com/v1/chat/completions
https://api.openai.com/v1/completions
https://api.openai.com/v1/embeddings
https://api.openai.com/v1/models
参考
https://vanna.ai/docs/configure/ollama/mysql