我正在使用此代码创建色度矢量数据库(我已跳过代码的非重要部分)
import os
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
current_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(current_dir, "books", "ulysses.txt")
persistent_directory = os.path.join(current_dir, "db", "chroma_db_Ulysse")
db = Chroma.from_documents(
docs, embeddings, persist_directory=persistent_directory,collection_name="CollectionUlysse")
它工作正常,除了当我尝试使用 Chroma 访问此数据库时,它找不到该集合:
import chromadb
import os
from chromadb.config import Settings
current_dir = os.path.dirname(os.path.abspath(__file__))
persistent_directory = os.path.join(current_dir, "db", "chroma_db_Ulysse_is_back")
print(f"Chemin du répertoire persistant : {persistent_directory}")
client = chromadb.Client(Settings(persist_directory=persistent_directory))
collections = client.list_collections()
collection_names = [col.name for col in collections]
print("Available collections :", collection_names)
Available collections : []
chromadb lib 和 Chroma lib frol langchain 之间有区别吗?
您可以尝试在配置中使用
PersistentClient
而不是 Client
吗? Client
用于通过环境变量或设置进行编程配置。在最近的版本中引入了新的设置,这可能会使提供 persistent_directory
不足以创建持久客户端。
我用 Langchain 创建了一个持久目录🦜🔗运行你的代码并得出相同的结论。检查 sqlite3 文件后,我可以确认该集合确实已创建,并使用
PersistentClient
解决了问题:
import chromadb
import os
from chromadb.config import Settings
client = chromadb.PersistentClient("db")
collections = client.list_collections()
collection_names = [col.name for col in collections]
print("Available collections :", collection_names)