vectordb

epsilla-cloudApache-2.0活跃维护

基于并行图计算的高性能向量数据库,用于存储和检索 embedding 向量,支撑语义搜索与 LLM 应用。

A high performance Vector Database leveraging parallel graph computing

v0.3.16发布于 2025-03-09 00:32 UTC874star46fork同步于 2026-11-07 07:31 UTC

怎么上手

由 README 提炼,执行前请确认
docker pull epsilla/vectordb
docker run --pull=always -d -p 8888:8888 -v /data:/data epsilla/vectordb
pip install pyepsilla
硬件要求按 README 说明

README 未说明具体显存或 GPU 要求,仅提供 Docker 镜像与 Python 绑定两种运行方式

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

开源向量数据库,用并行图遍历做索引,让向量检索更快更省

基于并行图计算的高性能向量数据库,用于存储和检索 embedding 向量,支撑语义搜索与 LLM 应用。

核心能力

  • 核心用 C++ 实现,采用并行图遍历技术构建向量索引
  • 支持元数据过滤,可在向量检索时按字段条件筛选
  • 支持稠密与稀疏向量融合的混合检索
  • 内置 embedding,可直接用自然语言查询并返回结果
  • 提供 Python/JavaScript/Ruby 客户端及 REST API,集成 LangChain 与 LlamaIndex

容易踩的坑

客户端默认连接 localhost:8888,需与容器端口映射一致;不启动 Docker 而用 Python 库属于实验特性,需先自行编译 oatpp 模块和绑定库;数据目录需挂载到容器的 /data 才能持久化

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.3.16
  1. cc-0.3.16enhance vectordb operationspre-release2025-09-07 · 2025-09-07 15:47 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/epsilla-cloud/vectordb/compare/v0.3.12...cc-0.3.16

  2. v0.3.16最新正式版2025-03-09 · 2025-03-09 00:32 UTC

    What's Changed

    Full Changelog: https://github.com/epsilla-cloud/vectordb/compare/v0.3.12...v0.3.16

  3. v0.3.122024-04-03 · 2024-04-03 13:56 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/epsilla-cloud/vectordb/compare/v0.3.11...v0.3.12

  4. v0.3.112024-03-14 · 2024-03-14 18:25 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/epsilla-cloud/vectordb/compare/v0.3.9...v0.3.11

  5. v0.3.92024-02-15 · 2024-02-15 15:37 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/epsilla-cloud/vectordb/compare/v0.3.8...v0.3.9

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    A 10x faster, cheaper, and better vector database

    Documentation • Discord • Twitter • Blog • YouTube • Feedback

    Epsilla is an open-source vector database. Our focus is on ensuring scalability, high performance, and cost-effectiveness of vector search. EpsillaDB bridges the gap between information retrieval and memory retention in Large Language Models.

    Quick Start using Docker

    1. Run Backend in Docker

    docker pull epsilla/vectordb
    docker run --pull=always -d -p 8888:8888 -v /data:/data epsilla/vectordb
    

    2. Interact with Python Client

    pip install pyepsilla
    
    from pyepsilla import vectordb
    
    client = vectordb.Client(host='localhost', port='8888')
    client.load_db(db_name="MyDB", db_path="/data/epsilla")
    client.use_db(db_name="MyDB")
    
    client.create_table(
        table_name="MyTable",
        table_fields=[
            {"name": "ID", "dataType": "INT", "primaryKey": True},
            {"name": "Doc", "dataType": "STRING"},
        ],
        indices=[
          {"name": "Index", "field": "Doc"},
        ]
    )
    
    client.insert(
        table_name="MyTable",
        records=[
            {"ID": 1, "Doc": "Jupiter is the largest planet in our solar system."},
            {"ID": 2, "Doc": "Cheetahs are the fastest land animals, reaching speeds over 60 mph."},
            {"ID": 3, "Doc": "Vincent van Gogh painted the famous work \"Starry Night.\""},
            {"ID": 4, "Doc": "The Amazon River is the longest river in the world."},
            {"ID": 5, "Doc": "The Moon completes one orbit around Earth every 27 days."},
        ],
    )
    
    client.query(
        table_name="MyTable",
        query_text="Celestial bodies and their characteristics",
        limit=2
    )
    
    # Result
    # {
    #     'message': 'Query search successfully.',
    #     'result': [
    #         {'Doc': 'Jupiter is the largest planet in our solar system.', 'ID': 1},
    #         {'Doc': 'The Moon completes one orbit around Earth every 27 days.', 'ID': 5}
    #     ],
    #     'statusCode': 200
    # }
    

    Features:

    • High performance and production-scale similarity search for embedding vectors.

    • Full fledged database management system with familiar database, table, and field concepts. Vector is just another field type.

    • Metadata filtering.

    • Hybrid search with a fusion of dense and sparse vectors.

    • Built-in embedding support, with natural language in natural language out search experience.

    • Cloud native architecture with compute storage separation, serverless, and multi-tenancy.

    • Rich ecosystem integrations including LangChain and LlamaIndex.

    • Python/JavaScript/Ruby clients, and REST API interface.

    Epsilla's core is written in C++ and leverages the advanced academic parallel graph traversal techniques for vector indexing, achieving 10 times faster vector search than HNSW while maintaining precision levels of over 99.9%.

    Epsilla Cloud

    Try our fully managed vector DBaaS at Epsilla Cloud

    (Experimental) Use Epsilla as a python library without starting a docker image

    1. Build Epsilla Python Bindings lib package

    cd engine/scripts
    (If on Ubuntu, run this first: bash setup-dev.sh)
    bash install_oatpp_modules.sh
    cd ..
    bash build.sh
    ls -lh build/*.so
    

    2. Run test with python bindings lib "epsilla.so" "libvectordb_dylib.so in the folder "build" built in the previous step

    cd engine
    export PYTHONPATH=./build/
    export DB_PATH=/tmp/db33
    python3 test/bindings/python/test.py
    

    Here are some sample code:

    import epsilla
    
    epsilla.load_db(db_name="db", db_path="/data/epsilla")
    epsilla.use_db(db_name="db")
    epsilla.create_table(
        table_name="MyTable",
        table_fields=[
            {"name": "ID", "dataType": "INT", "primaryKey": True},
            {"name": "Doc", "dataType": "STRING"},
            {"name": "EmbeddingEuclidean", "dataType": "VECTOR_FLOAT", "dimensions": 4, "metricType": "EUCLIDEAN"}
        ]
    )
    epsilla.insert(
        table_name="MyTable",
        records=[
            {"ID": 1, "Doc": "Berlin", "EmbeddingEuclidean": [0.05, 0.61, 0.76, 0.74]},
            {"ID": 2, "Doc": "London", "EmbeddingEuclidean": [0.19, 0.81, 0.75, 0.11]},
            {"ID": 3, "Doc": "Moscow", "EmbeddingEuclidean": [0.36, 0.55, 0.47, 0.94]}
        ]
    )
    (code, response) = epsilla.query(
        table_name="MyTable",
        query_field="EmbeddingEuclidean",
        response_fields=["ID", "Doc", "EmbeddingEuclidean"],
        query_vector=[0.35, 0.55, 0.47, 0.94],
        filter="ID < 6",
        limit=10,
        with_distance=True
    )
    print(code, response)