<!-- .github/pull_request_template.md --> ## Description <!-- Provide a clear description of the changes in this PR --> ## DCO Affirmation I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin.
165 lines
5.1 KiB
YAML
165 lines
5.1 KiB
YAML
name: Reusable Vector DB Tests
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
databases:
|
|
required: false
|
|
type: string
|
|
default: "all"
|
|
description: "Which vector databases to test (comma-separated list or 'all')"
|
|
secrets:
|
|
|
|
POSTGRES_PASSWORD:
|
|
required: false
|
|
|
|
jobs:
|
|
# run-chromadb-tests:
|
|
# name: ChromaDB Tests
|
|
# runs-on: ubuntu-22.04
|
|
# if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'chromadb') }}
|
|
# services:
|
|
# chromadb:
|
|
# image: chromadb/chroma:0.6.3
|
|
# env:
|
|
# CHROMA_SERVER_AUTH_CREDENTIALS: "test-token"
|
|
# CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER: "chromadb.auth.token.TokenAuthCredentialsProvider"
|
|
# CHROMA_SERVER_AUTH_PROVIDER: "chromadb.auth.token.TokenAuthServerProvider"
|
|
# ports:
|
|
# - 3002:8000
|
|
# steps:
|
|
# - name: Check out
|
|
# uses: actions/checkout@v4
|
|
# with:
|
|
# fetch-depth: 0
|
|
|
|
# - name: Cognee Setup
|
|
# uses: ./.github/actions/cognee_setup
|
|
# with:
|
|
# python-version: ${{ inputs.python-version }}
|
|
|
|
# - name: Install specific db dependency
|
|
# run: |
|
|
# poetry install -E chromadb
|
|
|
|
# - name: Run ChromaDB Tests
|
|
# env:
|
|
# ENV: 'dev'
|
|
# VECTOR_DB_PROVIDER: chromadb
|
|
# VECTOR_DB_URL: http://localhost:3002
|
|
# VECTOR_DB_KEY: test-token
|
|
# LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
# LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}
|
|
# LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
# LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }}
|
|
# EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }}
|
|
# EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
|
|
# EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
|
|
# EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
|
|
# run: poetry run python ./cognee/tests/test_chromadb.py
|
|
|
|
|
|
run_qdrant_integration_test:
|
|
name: Qdrant Tests
|
|
runs-on: ubuntu-latest
|
|
if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'qdrant') }}
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
services:
|
|
qdrant:
|
|
image: qdrant/qdrant:v1.14.1
|
|
env:
|
|
QDRANT__LOG_LEVEL: ERROR
|
|
QDRANT__SERVICE__API_KEY: qdrant_api_key
|
|
QDRANT__SERVICE__ENABLE_TLS: 0
|
|
ports:
|
|
- 6333:6333
|
|
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@master
|
|
|
|
- name: Cognee Setup
|
|
uses: ./.github/actions/cognee_setup
|
|
with:
|
|
python-version: ${{ inputs.python-version }}
|
|
|
|
- name: Install specific db dependency
|
|
run: |
|
|
poetry install -E qdrant
|
|
|
|
- name: Wait for Qdrant to be healthy
|
|
run: |
|
|
for i in {1..10}; do
|
|
if curl -f http://127.0.0.1:6333/healthz; then
|
|
echo "Qdrant is healthy!"
|
|
exit 0
|
|
fi
|
|
echo "Waiting for Qdrant to be healthy..."
|
|
sleep 3
|
|
done
|
|
echo "Qdrant failed to become healthy in time"
|
|
exit 1
|
|
|
|
- name: Run default Qdrant
|
|
env:
|
|
ENV: 'dev'
|
|
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}
|
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }}
|
|
EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }}
|
|
EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
|
|
EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
|
|
EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
|
|
VECTOR_DB_URL: 127.0.0.1
|
|
VECTOR_DB_KEY: qdrant_api_key
|
|
run: poetry run python ./cognee/tests/test_qdrant.py
|
|
|
|
run-postgres-tests:
|
|
name: PostgreSQL Tests
|
|
runs-on: ubuntu-22.04
|
|
if: ${{ inputs.databases == 'all' || contains(inputs.databases, 'postgres') }}
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg17
|
|
env:
|
|
POSTGRES_USER: cognee
|
|
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
|
|
POSTGRES_DB: cognee_db
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
- 5432:5432
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Cognee Setup
|
|
uses: ./.github/actions/cognee_setup
|
|
with:
|
|
python-version: ${{ inputs.python-version }}
|
|
|
|
- name: Install specific db dependency
|
|
run: |
|
|
poetry install -E postgres
|
|
|
|
- name: Run PGVector Tests
|
|
env:
|
|
ENV: 'dev'
|
|
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
LLM_ENDPOINT: ${{ secrets.LLM_ENDPOINT }}
|
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
LLM_API_VERSION: ${{ secrets.LLM_API_VERSION }}
|
|
EMBEDDING_MODEL: ${{ secrets.EMBEDDING_MODEL }}
|
|
EMBEDDING_ENDPOINT: ${{ secrets.EMBEDDING_ENDPOINT }}
|
|
EMBEDDING_API_KEY: ${{ secrets.EMBEDDING_API_KEY }}
|
|
EMBEDDING_API_VERSION: ${{ secrets.EMBEDDING_API_VERSION }}
|
|
run: poetry run python ./cognee/tests/test_pgvector.py
|