grepai-storage-postgres by yoanbernabeu/grepai-skills
npx skills add https://github.com/yoanbernabeu/grepai-skills --skill grepai-storage-postgres此技能涵盖将 PostgreSQL 与 pgvector 扩展一起用作 GrepAI 的存储后端。
| 优势 | 描述 |
|---|---|
| 👥 团队共享 | 多个用户可以访问同一索引 |
| 📏 可扩展 | 处理大型代码库 |
| 🔄 并发 | 支持多个同时搜索 |
| 💾 持久化 | 数据在机器重启后仍然存在 |
| 🔧 熟悉 | 使用标准数据库工具 |
# 运行带 pgvector 的 PostgreSQL
docker run -d \
--name grepai-postgres \
-e POSTGRES_USER=grepai \
-e POSTGRES_PASSWORD=grepai \
-e POSTGRES_DB=grepai \
-p 5432:5432 \
pgvector/pgvector:pg16
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
# 安装 pgvector 扩展(Ubuntu/Debian)
sudo apt install postgresql-16-pgvector
# 或者从源代码编译
git clone https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
然后启用扩展:
-- 连接到你的数据库
CREATE EXTENSION IF NOT EXISTS vector;
# .grepai/config.yaml
store:
backend: postgres
postgres:
dsn: postgres://user:password@localhost:5432/grepai
store:
backend: postgres
postgres:
dsn: ${DATABASE_URL}
设置环境变量:
export DATABASE_URL="postgres://user:password@localhost:5432/grepai"
store:
backend: postgres
postgres:
dsn: postgres://user:password@host:5432/database?sslmode=require
DSN 组成部分:
user: 数据库用户名password: 数据库密码host: 服务器主机名或 IP5432: 端口(默认:5432)database: 数据库名称sslmode: SSL 模式(disable, require, verify-full)| 模式 | 描述 | 使用场景 |
|---|---|---|
disable | 不使用 SSL | 本地开发 |
require | 需要 SSL | 生产环境 |
verify-full | SSL + 验证证书 | 高安全性环境 |
# 生产环境使用 SSL
store:
backend: postgres
postgres:
dsn: postgres://user:pass@prod.db.com:5432/grepai?sslmode=require
GrepAI 会自动创建以下表:
-- 向量嵌入表
CREATE TABLE IF NOT EXISTS embeddings (
id SERIAL PRIMARY KEY,
file_path TEXT NOT NULL,
chunk_index INTEGER NOT NULL,
content TEXT NOT NULL,
start_line INTEGER,
end_line INTEGER,
embedding vector(768), -- 维度与你的模型匹配
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(file_path, chunk_index)
);
-- 向量相似性搜索索引
CREATE INDEX ON embeddings USING ivfflat (embedding vector_cosine_ops);
-- 连接到数据库
psql -U grepai -d grepai
-- 检查扩展是否已安装
SELECT * FROM pg_extension WHERE extname = 'vector';
-- 检查 GrepAI 表是否存在(在首次运行 grepai watch 后)
\dt
# 检查状态
grepai status
# 应显示 PostgreSQL 后端信息
为了获得更好的向量搜索性能:
-- 增加向量操作的工作内存
SET work_mem = '256MB';
-- 根据你的硬件进行调整
SET effective_cache_size = '4GB';
SET shared_buffers = '1GB';
对于大型索引,调整 IVFFlat 索引:
-- 列表越多 = 搜索越快,内存占用越多
CREATE INDEX ON embeddings
USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100); -- 根据行数调整
经验法则:lists = sqrt(rows)
PostgreSQL 自动处理并发访问:
grepai search 命令可以同时工作grepai watch 守护进程所有团队成员指向同一个数据库:
# 每个开发者的 .grepai/config.yaml
store:
backend: postgres
postgres:
dsn: postgres://team:secret@shared-db.company.com:5432/grepai
对于隔离的项目,使用单独的数据库:
# 创建数据库
createdb -U postgres grepai_projecta
createdb -U postgres grepai_projectb
# 项目 A 配置
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai_projecta
pg_dump -U grepai -d grepai > grepai_backup.sql
psql -U grepai -d grepai < grepai_backup.sql
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai
3. 删除旧索引:
rm .grepai/index.gob
4. 重新索引:
grepai watch
❌ 问题: FATAL: password authentication failed ✅ 解决方案: 检查 DSN 凭据和 pg_hba.conf
❌ 问题: ERROR: extension "vector" is not available ✅ 解决方案: 安装 pgvector:
sudo apt install postgresql-16-pgvector
# 然后:CREATE EXTENSION vector;
❌ 问题: ERROR: type "vector" does not exist ✅ 解决方案: 在数据库中启用扩展:
CREATE EXTENSION IF NOT EXISTS vector;
❌ 问题: 连接被拒绝 ✅ 解决方案:
❌ 问题: 搜索缓慢 ✅ 解决方案:
work_memPostgreSQL 存储状态:
✅ PostgreSQL Storage Configured
Backend: PostgreSQL + pgvector
Host: localhost:5432
Database: grepai
SSL: disabled
Contents:
- Files: 2,450
- Chunks: 12,340
- Vector dimension: 768
Performance:
- Connection: OK
- IVFFlat index: Yes
- Search latency: ~50ms
每周安装量
201
仓库
GitHub 星标
15
首次出现
2026年1月28日
安全审计
安装于
opencode166
codex158
github-copilot146
gemini-cli145
kimi-cli136
amp135
This skill covers using PostgreSQL with the pgvector extension as the storage backend for GrepAI.
| Benefit | Description |
|---|---|
| 👥 Team sharing | Multiple users can access same index |
| 📏 Scalable | Handles large codebases |
| 🔄 Concurrent | Multiple simultaneous searches |
| 💾 Persistent | Data survives machine restarts |
| 🔧 Familiar | Standard database tooling |
# Run PostgreSQL with pgvector
docker run -d \
--name grepai-postgres \
-e POSTGRES_USER=grepai \
-e POSTGRES_PASSWORD=grepai \
-e POSTGRES_DB=grepai \
-p 5432:5432 \
pgvector/pgvector:pg16
# Install pgvector extension (Ubuntu/Debian)
sudo apt install postgresql-16-pgvector
# Or compile from source
git clone https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
Then enable the extension:
-- Connect to your database
CREATE EXTENSION IF NOT EXISTS vector;
# .grepai/config.yaml
store:
backend: postgres
postgres:
dsn: postgres://user:password@localhost:5432/grepai
store:
backend: postgres
postgres:
dsn: ${DATABASE_URL}
Set the environment variable:
export DATABASE_URL="postgres://user:password@localhost:5432/grepai"
store:
backend: postgres
postgres:
dsn: postgres://user:password@host:5432/database?sslmode=require
DSN components:
user: Database usernamepassword: Database passwordhost: Server hostname or IP5432: Port (default: 5432)database: Database namesslmode: SSL mode (disable, require, verify-full)| Mode | Description | Use Case |
|---|---|---|
disable | No SSL | Local development |
require | SSL required | Production |
verify-full | SSL + verify certificate | High security |
# Production with SSL
store:
backend: postgres
postgres:
dsn: postgres://user:pass@prod.db.com:5432/grepai?sslmode=require
GrepAI automatically creates these tables:
-- Vector embeddings table
CREATE TABLE IF NOT EXISTS embeddings (
id SERIAL PRIMARY KEY,
file_path TEXT NOT NULL,
chunk_index INTEGER NOT NULL,
content TEXT NOT NULL,
start_line INTEGER,
end_line INTEGER,
embedding vector(768), -- Dimension matches your model
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(file_path, chunk_index)
);
-- Index for vector similarity search
CREATE INDEX ON embeddings USING ivfflat (embedding vector_cosine_ops);
-- Connect to database
psql -U grepai -d grepai
-- Check extension is installed
SELECT * FROM pg_extension WHERE extname = 'vector';
-- Check GrepAI tables exist (after first grepai watch)
\dt
# Check status
grepai status
# Should show PostgreSQL backend info
For better vector search performance:
-- Increase work memory for vector operations
SET work_mem = '256MB';
-- Adjust for your hardware
SET effective_cache_size = '4GB';
SET shared_buffers = '1GB';
For large indices, tune the IVFFlat index:
-- More lists = faster search, more memory
CREATE INDEX ON embeddings
USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100); -- Adjust based on row count
Rule of thumb: lists = sqrt(rows)
PostgreSQL handles concurrent access automatically:
grepai search commands work simultaneouslygrepai watch daemon per codebaseAll team members point to the same database:
# Each developer's .grepai/config.yaml
store:
backend: postgres
postgres:
dsn: postgres://team:secret@shared-db.company.com:5432/grepai
For isolated projects, use separate databases:
# Create databases
createdb -U postgres grepai_projecta
createdb -U postgres grepai_projectb
# Project A config
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai_projecta
pg_dump -U grepai -d grepai > grepai_backup.sql
psql -U grepai -d grepai < grepai_backup.sql
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai
3. Delete old index:
rm .grepai/index.gob
4. Re-index:
grepai watch
❌ Problem: FATAL: password authentication failed ✅ Solution: Check DSN credentials and pg_hba.conf
❌ Problem: ERROR: extension "vector" is not available ✅ Solution: Install pgvector:
sudo apt install postgresql-16-pgvector
# Then: CREATE EXTENSION vector;
❌ Problem: ERROR: type "vector" does not exist ✅ Solution: Enable extension in the database:
CREATE EXTENSION IF NOT EXISTS vector;
❌ Problem: Connection refused ✅ Solution:
❌ Problem: Slow searches ✅ Solution:
work_memPostgreSQL storage status:
✅ PostgreSQL Storage Configured
Backend: PostgreSQL + pgvector
Host: localhost:5432
Database: grepai
SSL: disabled
Contents:
- Files: 2,450
- Chunks: 12,340
- Vector dimension: 768
Performance:
- Connection: OK
- IVFFlat index: Yes
- Search latency: ~50ms
Weekly Installs
201
Repository
GitHub Stars
15
First Seen
Jan 28, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
opencode166
codex158
github-copilot146
gemini-cli145
kimi-cli136
amp135
纯文本转Markdown工具 - 一键转换文本文档为格式规范的Markdown文件
7,700 周安装
GitHub Copilot 指令推荐工具 - 自动分析项目并推荐优质AI编程指令
7,700 周安装
结构化自主规划工具 - GitHub Copilot项目开发计划制定与分解助手
7,700 周安装
Quasi-Coder:AI辅助编程工具,将速记和自然语言转化为生产级代码
7,700 周安装
GitHub Copilot 指令蓝图生成器 - 自动创建项目专属AI编程助手配置
7,800 周安装
ASP.NET Core Docker容器化指南:一键生成优化Dockerfile配置
7,700 周安装