[AI Embedchain] 组件 向量数据库

ChromaDB

main.py

1
2
3
4
from embedchain import App

# 从 YAML 文件加载 Chroma 配置
app = App.from_config(config_path="config1.yaml")

config1.yaml

1
2
3
4
5
6
vectordb:
  provider: chroma
  config:
    collection_name: 'my-collection'
    dir: db
    allow_reset: true

config2.yaml

1
2
3
4
5
6
7
vectordb:
  provider: chroma
  config:
    collection_name: 'my-collection'
    host: localhost
    port: 5200
    allow_reset: true

Elasticsearch

使用以下命令安装相关依赖项:

1
pip install --upgrade 'embedchain[elasticsearch]'

你可以通过提供 es_urlcloud_id 来配置 Elasticsearch 连接。如果你正在使用 Elastic Cloud 上的 Elasticsearch Service,你可以在 Elastic Cloud 控制台 上找到 cloud_id

你可以通过提供 basic_authapi_keybearer_auth 来授权连接到 Elasticsearch。

main.py

1
2
3
4
from embedchain import App

# 从 YAML 文件加载 Elasticsearch 配置
app = App.from_config(config_path="config.yaml")

config.yaml

1
2
3
4
5
6
7
8
9
vectordb:
  provider: elasticsearch
  config:
    collection_name: 'es-index'
    cloud_id: 'deployment-name:xxxx'
    basic_auth:
      - elastic
      - <your_password>
    verify_certs: false

Pinecone

概览

使用以下命令安装 Pinecone 相关依赖项:

1
pip install --upgrade 'pinecone-client pinecone-text'

为了将 Pinecone 用作向量数据库,需要设置环境变量 PINECONE_API_KEY,你可以在 Pinecone 控制台 找到它。

main.py

1
2
3
4
5
6
from embedchain import App

# 从 YAML 文件加载 Pinecone 配置
app = App.from_config(config_path="pod_config.yaml")
# 或者
app = App.from_config(config_path="serverless_config.yaml")

pod_config.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
vectordb:
  provider: pinecone
  config:
    metric: cosine
    vector_dimension: 1536
    index_name: my-pinecone-index
    pod_config:
      environment: gcp-starter
      metadata_config:
        indexed:
          - "url"
          - "hash"

serverless_config.yaml

1
2
3
4
5
6
7
8
9
vectordb:
  provider: pinecone
  config:
    metric: cosine
    vector_dimension: 1536
    index_name: my-pinecone-index
    serverless_config:
      cloud: aws
      region: us-west-2

关于 Pinecone 配置的更多信息可以在这里找到:这里。 你还可以选择性地在 YAML 文件中提供 index_name 作为配置参数来指定索引名称。如果不提供,索引名称将为 {collection_name}-{vector_dimension}

使用方法

混合搜索

以下是如何使用 Pinecone 作为向量数据库通过 Embedchain 进行混合搜索的一个示例。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import os

from embedchain import App

config = {
    'app': {
        "config": {
            "id": "ec-docs-hybrid-search"
        }
    },
    'vectordb': {
        'provider': 'pinecone',
        'config': {
            'metric': 'dotproduct',
            'vector_dimension': 1536,
            'index_name': 'my-index',
            'serverless_config': {
                'cloud': 'aws',
                'region': 'us-west-2'
            },
            'hybrid_search': True,  # 记得为混合搜索设置这个选项
        }
    }
}

# 初始化应用
app = App.from_config(config=config)

# 添加文档
app.add("/path/to/file.pdf", data_type="pdf_file", namespace="my-namespace")

# 查询
app.query("<YOUR QUESTION HERE>", namespace="my-namespace")

# 对话
app.chat("<YOUR QUESTION HERE>", namespace="my-namespace")

在底层,Embedchain 通过在 Pinecone 索引上进行混合搜索来获取相关文档片段。 如果你有关于 Pinecone 混合搜索的工作原理的问题,请参考他们的 官方文档

OpenSearch

使用以下命令安装相关依赖项:

1
pip install --upgrade 'embedchain[opensearch]'

main.py

1
2
3
4
from embedchain import App

# 从 yaml 文件加载 OpenSearch 配置
app = App.from_config(config_path="config.yaml")

config.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vectordb:
  provider: opensearch
  config:
    collection_name: 'my-app'
    opensearch_url: 'https://localhost:9200'
    http_auth:
      - admin
      - admin
    vector_dimension: 1536
    use_ssl: false
    verify_certs: false

Qdrant

要将 Qdrant 作为向量数据库使用,请设置环境变量 QDRANT_URLQDRANT_API_KEY,你可以在 Qdrant 仪表板 上找到它们。

main.py

1
2
3
4
from embedchain import App

# 从 yaml 文件加载 Qdrant 配置
app = App.from_config(config_path="config.yaml")

config.yaml

1
2
3
4
vectordb:
  provider: qdrant
  config:
    collection_name: my_qdrant_index

Weaviate

要将 Weaviate 作为向量数据库使用,请设置环境变量 WEAVIATE_ENDPOINTWEAVIATE_API_KEY,你可以在 Weaviate 仪表板 上找到它们。

main.py

1
2
3
4
from embedchain import App

# 从 yaml 文件加载 Weaviate 配置
app = App.from_config(config_path="config.yaml")

config.yaml

1
2
3
4
vectordb:
  provider: weaviate
  config:
    collection_name: my_weaviate_index

Zilliz

使用以下命令安装相关依赖项:

1
pip install --upgrade 'embedchain[milvus]'

设置 Zilliz 环境变量 ZILLIZ_CLOUD_URIZILLIZ_CLOUD_TOKEN,你可以在他们的 云平台 上找到这些信息。

main.py

1
2
3
4
5
6
7
8
import os
from embedchain import App

os.environ['ZILLIZ_CLOUD_URI'] = 'https://xxx.zillizcloud.com'
os.environ['ZILLIZ_CLOUD_TOKEN'] = 'xxx'

# 从 yaml 文件加载 Zilliz 配置
app = App.from_config(config_path="config.yaml")

config.yaml

1
2
3
4
5
6
7
8
vectordb:
  provider: zilliz
  config:
    collection_name: 'zilliz_app'
    uri: https://xxxx.api.gcp-region.zillizcloud.com
    token: xxx
    vector_dim: 1536
    metric_type: L2