和其他AI应用的流程。
pgai的目标是让AI工作更简单、更易于开发者使用。由于数据是大多数AI应用的基础,pgai致力于简化在AI工作流中利用数据的过程。其核心价值在于将AI能力与PostgreSQL紧密集成,使开发者能够直接在数据库中处理向量嵌入、执行语义搜索、实现RAG等AI任务,无需复杂的外部系统集成。
适用于需要基于企业私有数据构建问答系统的场景,如内部知识库、客户支持助手等,通过SQL直接实现检索与生成一体化。
为应用添加语义搜索能力,支持用户以自然语言查询结构化数据,提升搜索准确性(如电商产品搜索、文档检索)。
对现有业务数据(如用户评论、工单记录)进行自动分类或总结,辅助业务分析与决策。
需要存储、索引和查询向量嵌入的场景,尤其是大规模向量数据(百万级以上)的高效管理。
1. Timescale Cloud
创建免费试用账户,直接使用预配置的pgai环境,参考https://github.com/timescale/pgai/blob/main/docs/vectorizer.md%E3%80%82
2. 预构建Docker镜像
使用官方预构建Docker镜像,包含pgai及依赖组件(如pgvector、pgvectorscale)。
3. 源码编译
从https://github.com/timescale/pgai%E5%85%8B%E9%9A%86%E6%BA%90%E7%A0%81%EF%BC%8C%E6%8C%89%E6%96%87%E6%A1%A3%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85%EF%BC%88%E9%9C%80PostgreSQL 14+环境)。
docker run 命令
bashdocker run -d \ --name pgai-instance \ -e POSTGRES_PASSWORD=your_secure_password \ -e POSTGRES_DB=pgai_demo \ -e OPENAI_API_KEY="your_openai_api_key" # 可选,根据使用的AI提供商配置 -p 5432:5432 \ timescale/pgai:latest
docker-compose 配置
yamlversion: '3.8' services: pgai: image: timescale/pgai:latest container_name: pgai-postgres environment: POSTGRES_PASSWORD: your_secure_password POSTGRES_USER: pgai_user POSTGRES_DB: pgai_demo OLLAMA_BASE_URL: "http://ollama:11434" # 若使用Ollama,配置服务地址 ANTHROPIC_API_KEY: "your_anthropic_api_key" # 若使用Anthropic Claude ports: - "5432:5432" volumes: - pgai_data:/var/lib/postgresql/data depends_on: - ollama # 若使用本地Ollama,添加依赖服务 ollama: image: ollama/ollama:latest container_name: pgai-ollama volumes: - ollama_data:/root/.ollama ports: - "11434:11434" volumes: pgai_data: ollama_data:
参考https://github.com/timescale/pgai/blob/main/docs/vectorizer-quick-start.md%EF%BC%8C10%E5%88%86%E9%92%9F%E5%86%85%E5%AE%8C%E6%88%90%E8%87%AA%E6%89%98%E7%AE%A1PostgreSQL%E7%8E%AF%E5%A2%83%E7%9A%84pgai%E9%85%8D%E7%BD%AE%EF%BC%8C%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%B5%8C%E5%85%A5%E8%87%AA%E5%8A%A8%E5%8C%96%E3%80%82
核心步骤:
连接数据库并启用pgai扩展:
sqlCREATE EXTENSION pgai;
创建带向量字段的表:
sqlCREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT NOT NULL, embedding vector(1536) -- 向量维度需与模型匹配(如OpenAI text-embedding-3-small为1536) );
配置Vectorizer自动生成嵌入:
sqlSELECT pgai.vectorizer_create( table_name => 'documents', source_column => 'content', embedding_column => 'embedding', model => 'openai:text-embedding-3-small' );
插入数据后自动生成嵌入:
sqlINSERT INTO documents (content) VALUES ('pgai是PostgreSQL的AI扩展工具'); -- embedding字段将自动填充向量值
OpenAI配置
设置环境变量:
bashexport OPENAI_API_KEY="sk-..." # Docker部署时通过-e传递
测试模型调用:
sqlSELECT pgai.openai_chat_completion( model => 'gpt-4o', messages => '[{"role":"user","content":"介绍pgai的核心功能"}]' );
Ollama配置
启动Ollama服务并拉取模型:
bashdocker exec -it pgai-ollama ollama pull llama3
配置pgai连接Ollama:
sqlSELECT pgai.ollama_configure(base_url => 'http://ollama:11434');
生成向量嵌入:
sqlSELECT pgai.ollama_embed( model => 'llama3', input => 'pgai支持在PostgreSQL中开发AI应用' );
语义搜索
查询与"AI工具"相关的文档:
sqlSELECT content, pgai.cosine_similarity( embedding, pgai.openai_embed('text-embedding-3-small', 'AI工具') ) AS similarity FROM documents ORDER BY similarity DESC LIMIT 3;
RAG实现
基于检索到的文档生成回答:
sqlWITH retrieved_docs AS ( SELECT content FROM documents ORDER BY pgai.cosine_similarity( embedding, pgai.openai_embed('text-embedding-3-small', 'pgai如何实现RAG?') ) DESC LIMIT 2 ) SELECT pgai.openai_chat_completion( model => 'gpt-4o', messages => format( '[{"role":"system","content":"基于以下文档回答问题: %s"},{"role":"user","content":"pgai如何实现RAG?"}]', array_agg(content)::TEXT ) ) AS rag_answer FROM retrieved_docs;
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务