import chromadb
from llama_index.vector_stores.chroma import ChromaVectorStore
# Create a Chroma client and collection
chroma_client = chromadb.EphemeralClient()
chroma_collection = chroma_client.create_collection("example_collection")
# Set up the ChromaVectorStore and StorageContext
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
# Example of adding nodes
nodes = [...] # List of BaseNode instances with embeddings
vector_store.add(nodes)
# Example of querying nodes
query = VectorStoreQuery(query_embedding=[...], similarity_top_k=5)
result = vector_store.query(query)
# Example of deleting nodes
vector_store.delete_nodes(node_ids=["node_id_1", "node_id_2"])
from llama_index.legacy.readers.chroma import ChromaReader
# Initialize the ChromaReader
chroma_reader = ChromaReader(
collection_name="example_collection",
persist_directory="/path/to/persisted/collection"
)
# Load data from the collection
documents = chroma_reader.load_data(query_embedding=[...], limit=10)
6条答案
按热度按时间slmsl1lt1#
嘿,@Rust-Ninja-Sabi!我在这里帮助你解决这个仓库中的任何错误、问题或贡献。在等待人工维护者时,我会协助你。
index.ref_doc_info
在 0.10.41 版本中无法与chromadb
一起使用,因为ChromaVectorStore
类没有名为ref_doc_info
的属性或方法。该类旨在处理与节点及其嵌入相关的操作,但不包括与ref_doc_info
1(https://github.com/run-llama/llama_index/blob/main/llama-index-legacy/llama_index/legacy/vector_stores/chroma.py)2(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/llama_index/vector_stores/chroma/base.py) 相关的任何功能。遇到的具体错误信息是:
对于管理不支持
ref_doc_info
的矢量存储中的文档引用和元数据,你可以遵循推荐的做法,例如将节点存储在文档存储中并确保正确管理元数据。00jrzges2#
当它与Chromadb一起工作时,何时才能生效?我使用llama索引来为所有可用的存储提供一个API。但是据我所知,文档管理功能在Chromadb中不可用。它是否适用于任何矢量数据库?谢谢。
erhoui1w3#
文档管理适用于
chromadb
矢量数据库。提供的代码演示了如何在ChromaVectorStore
中使用chromadb
创建、添加、删除和查询文档。以下是如何设置和使用
ChromaVectorStore
的示例:此外,
llama_index
库中的ChromaReader
类允许您从现有的持久化Chroma集合中检索文档。以下是如何使用ChromaReader
的示例:对于持久存储,您可以使用
PersistentClient
来管理您的Chroma集合。以下是一个示例:这种设置确保了您使用
chromadb
进行的文档管理既灵活又具有持久性。uhry853o4#
@dosu vector_store.get_notes() is not implemented. Can you show me the query to get all nodes? Thanks.
eulz3vhy5#
要查询和检索
ChromaVectorStore
中的所有节点,您可以使用带有空查询的query
方法。以下是一个示例:import chromadb
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core.vector_stores.types import VectorStoreQuery
Create a Chroma client and collection
chroma_client = chromadb.Client()
collection = chroma_client.get_or_create_collection("example_collection")
Set up the ChromaVectorStore
vector_store = ChromaVectorStore.from_collection(collection)
Retrieve all nodes
query = VectorStoreQuery(query_embedding=[], similarity_top_k=0)
all_nodes_result = vector_store.query(query)
all_nodes_result.nodes will contain the list of all nodes in the collection
print(all_nodes_result.nodes)
这段代码将通过调用带有空查询嵌入和
similarity_top_k
设置为 0 的query
方法来从ChromaVectorStore
中检索所有节点。query
方法将返回一个包含集合 1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/llama_index/vector_stores/chroma/base.py)2(https://github.com/run-llama/llama_index/blob/main/llama-index-legacy/llama_index/legacy/vector_stores/chroma.py)3(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/tests/test_chromadb.py) 中所有节点的VectorStoreQueryResult
对象。monwx1rj6#
@Rust-Ninja-Sabi 这是正确的。
ref_doc_info
依赖于有一个文档存储,但大多数向量数据库禁用文档存储,因为它们将所有节点存储在向量数据库中(简化存储)。我建议使用带有附加向量存储和文档存储的摄取管道。