grepai-storage-qdrant

安装量: 182
排名: #4698

安装

npx skills add https://github.com/yoanbernabeu/grepai-skills --skill grepai-storage-qdrant

This skill covers using Qdrant as the storage backend for GrepAI, offering high-performance vector search.

When to Use This Skill

  • Need fastest possible search performance

  • Very large codebases (50K+ files)

  • Already using Qdrant infrastructure

  • Want advanced vector search features

What is Qdrant?

Qdrant is a purpose-built vector database offering:

  • ⚡ Extremely fast vector similarity search

  • 📏 Excellent scalability

  • 🔧 Advanced filtering capabilities

  • 🐳 Easy Docker deployment

Prerequisites

  • Qdrant server running

  • Network access to Qdrant

Advantages

| ⚡ Performance | Fastest vector search

| 📏 Scalability | Handles millions of vectors

| 🔍 Advanced | Filtering, payloads, sharding

| 🐳 Easy deploy | Docker-ready

| ☁️ Cloud option | Qdrant Cloud available

Setting Up Qdrant

# Run Qdrant with persistent storage
docker run -d \
  --name grepai-qdrant \
  -p 6333:6333 \
  -p 6334:6334 \
  -v qdrant_storage:/qdrant/storage \
  qdrant/qdrant

Ports:

  • 6333: REST API

  • 6334: gRPC API (used by GrepAI)

Option 2: Docker Compose

# docker-compose.yml
version: '3.8'
services:
  qdrant:
    image: qdrant/qdrant
    ports:
      - "6333:6333"
      - "6334:6334"
    volumes:
      - qdrant_storage:/qdrant/storage
    environment:
      - QDRANT__SERVICE__GRPC_PORT=6334

volumes:
  qdrant_storage:
docker-compose up -d

Option 3: Qdrant Cloud

  • Sign up at cloud.qdrant.io

  • Create a cluster

  • Get your endpoint and API key

Configuration

Basic Configuration (Local)

# .grepai/config.yaml
store:
  backend: qdrant
  qdrant:
    endpoint: localhost
    port: 6334

With TLS (Production)

store:
  backend: qdrant
  qdrant:
    endpoint: qdrant.company.com
    port: 6334
    use_tls: true

With API Key (Qdrant Cloud)

store:
  backend: qdrant
  qdrant:
    endpoint: your-cluster.aws.cloud.qdrant.io
    port: 6334
    use_tls: true
    api_key: ${QDRANT_API_KEY}

Set the environment variable:

export QDRANT_API_KEY="your-api-key"

Configuration Options

| endpoint | localhost | Qdrant server hostname

| port | 6334 | gRPC port

| use_tls | false | Enable TLS encryption

| api_key | none | Authentication key

Verifying Setup

Check Qdrant is Running

# REST API health check
curl http://localhost:6333/health

# Expected: {"status":"ok"}

Check Collections (after indexing)

# List collections
curl http://localhost:6333/collections

# Get collection info
curl http://localhost:6333/collections/grepai

From GrepAI

grepai status

# Should show Qdrant backend info

Qdrant Dashboard

Access the web dashboard at http://localhost:6333/dashboard:

  • View collections

  • Browse vectors

  • Execute queries

  • Monitor performance

Performance Characteristics

Search Latency

| Small (1K files) | 5,000 | <10ms

| Medium (10K files) | 50,000 | <20ms

| Large (100K files) | 500,000 | <50ms

Memory Usage

Qdrant loads vectors into memory for fast search:

| 10,000 | 768 | ~60 MB

| 100,000 | 768 | ~600 MB

| 1,000,000 | 768 | ~6 GB

Advanced Configuration

Qdrant Server Configuration

Create config/production.yaml:

storage:
  storage_path: /qdrant/storage

service:
  grpc_port: 6334
  http_port: 6333
  max_request_size_mb: 32

optimizers:
  memmap_threshold_kb: 200000
  indexing_threshold_kb: 50000

Mount in Docker:

docker run -d \
  -v ./config:/qdrant/config \
  -v qdrant_storage:/qdrant/storage \
  qdrant/qdrant

Collection Settings

GrepAI creates a collection named grepai with:

  • Vector size: matches your embedding dimensions

  • Distance: Cosine similarity

  • On-disk storage for large datasets

Clustering (Advanced)

For very large deployments, Qdrant supports distributed mode:

# qdrant config
cluster:
  enabled: true
  p2p:
    port: 6335

Backup and Restore

Snapshot Creation

# Create snapshot via REST API
curl -X POST 'http://localhost:6333/collections/grepai/snapshots'

Restore Snapshot

# Restore from snapshot
curl -X PUT 'http://localhost:6333/collections/grepai/snapshots/recover' \
  -H 'Content-Type: application/json' \
  -d '{"location": "/path/to/snapshot"}'

Migrating from GOB

  • Start Qdrant:
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant
  • Update configuration:
store:
  backend: qdrant
  qdrant:
    endpoint: localhost
    port: 6334
  • Delete old index:
rm .grepai/index.gob
  • Re-index:
grepai watch

Migrating from PostgreSQL

  • Start Qdrant

  • Update configuration to use Qdrant

  • Re-index (embeddings must be regenerated)

Common Issues

Problem: Connection refused ✅ Solution: Ensure Qdrant is running:

docker ps | grep qdrant
docker start grepai-qdrant

Problem: gRPC connection failed ✅ Solution: Check port 6334 is exposed:

docker run -p 6334:6334 ...

Problem: Authentication failed ✅ Solution: Check API key:

echo $QDRANT_API_KEY

Problem: Out of memory ✅ Solutions:

  • Enable on-disk storage in Qdrant config

  • Increase Docker memory limit

  • Use Qdrant Cloud for managed scaling

Problem: Slow initial indexing ✅ Solution: This is normal; Qdrant optimizes in background. Searches will be fast after indexing completes.

Qdrant vs PostgreSQL

| Search speed | ⚡⚡⚡ | ⚡⚡

| Setup complexity | Easy (Docker) | Medium

| SQL queries | ❌ | ✅

| Scalability | Excellent | Good

| Memory efficiency | Excellent | Good

| Team familiarity | Lower | Higher

Recommendation: Use Qdrant for large codebases or maximum performance. Use PostgreSQL if you need SQL integration or team is familiar with it.

Best Practices

  • Use persistent volume: Mount /qdrant/storage

  • Enable TLS in production: Set use_tls: true

  • Secure API key: Use environment variables

  • Monitor memory: Vector search is memory-intensive

  • Regular snapshots: Backup before major changes

Output Format

Qdrant storage status:

✅ Qdrant Storage Configured

   Backend: Qdrant
   Endpoint: localhost:6334
   TLS: disabled
   Collection: grepai

   Contents:
   - Files: 5,000
   - Vectors: 25,000
   - Dimensions: 768

   Performance:
   - Connection: OK
   - Indexed: Yes
   - Search latency: ~15ms
返回排行榜