通过 Python 客户端使用存储在 Azure ChromaDB 实例中

问题描述 投票:0回答:1

我已经设置了一个 Azure WebApp,以便使用 ChromaDB 实例来存储一些数据。我想用python来添加文档,进行查询等

我目前正在做的事情:

import chromadb
from chromadb.config import Settings
client = chromadb.HttpClient(
    host=url,
    settings=Settings(
        chroma_client_auth_provider=CHROMA_SERVER_AUTHN_PROVIDER,
        chroma_client_auth_credentials=bearer_token
                      )
)

我的网址是 https://....azurewebsites.net”,设置参数存储在我的 azure 实例 ENV 变量中。 它似乎不欣赏我的登录参数:

ValueError                                Traceback (most recent call last)
Cell In[23], line 3
      1 import chromadb
      2 from chromadb.config import Settings
----> 3 client = chromadb.HttpClient(
      4     host=url,
      5     settings=Settings(
      6         chroma_client_auth_provider=CHROMA_SERVER_AUTHN_PROVIDER,
      7         chroma_client_auth_credentials=bearer_token
      8                       )
      9 )

File ~\AppData\Roaming\Python\Python312\site-packages\chromadb\__init__.py:204, in HttpClient(host, port, ssl, headers, settings, tenant, database)
    201 settings.chroma_server_ssl_enabled = ssl
    202 settings.chroma_server_headers = headers
--> 204 return ClientCreator(tenant=tenant, database=database, settings=settings)

File ~\AppData\Roaming\Python\Python312\site-packages\chromadb\api\client.py:56, in Client.__init__(self, tenant, database, settings)
     50 def __init__(
     51     self,
     52     tenant: str = DEFAULT_TENANT,
     53     database: str = DEFAULT_DATABASE,
     54     settings: Settings = Settings(),
     55 ) -> None:
...
    118         "Both credentials file and credentials found."
    119         "Please provide only one."
    120     )

ValueError: No credentials file or credentials found in [chroma_server_authn_credentials].

我做错了什么?还有其他通过 Python 连接的方法吗?

谢谢你

python azure chromadb
1个回答
0
投票

该错误表明同时定义了 CHROMA_SERVER_AUTHN_CREDENTIALS_FILE 和 CHROMA_SERVER_AUTHN_CREDENTIALS,这导致了冲突。 ChromaDB 一次只需要提供一组凭据。

解决步骤 删除多余的环境变量 您可以使用基本身份验证或基于令牌的身份验证,但不能同时使用两者。根据您的选择:

选项 1:基本身份验证 仅设置这些环境变量:

export CHROMA_SERVER_AUTHN_CREDENTIALS_FILE="<path_to_server.htpasswd>"
export CHROMA_SERVER_AUTHN_PROVIDER="chromadb.auth.basic_authn.BasicAuthenticationServerProvider"

删除以下内容:

unset CHROMA_SERVER_AUTHN_CREDENTIALS
unset CHROMA_AUTH_TOKEN_TRANSPORT_HEADER

选项 2:基于令牌的身份验证 仅设置这些环境变量:

export CHROMA_SERVER_AUTHN_CREDENTIALS="test-token"
export CHROMA_SERVER_AUTHN_PROVIDER="chromadb.auth.token_authn.TokenAuthenticationServerProvider"
export CHROMA_AUTH_TOKEN_TRANSPORT_HEADER="X-Chroma-Token"

删除以下内容:

unset CHROMA_SERVER_AUTHN_CREDENTIALS_FILE

获取您的环境文件 进行这些更改后,确保加载环境变量:

source ~/.bashrc  # or ~/.zshrc depending on your shell

验证变量确认仅设置了必要的变量:

echo $CHROMA_SERVER_AUTHN_CREDENTIALS
echo $CHROMA_SERVER_AUTHN_CREDENTIALS_FILE

确保其中只有一个返回值。

© www.soinside.com 2019 - 2024. All rights reserved.