Chroma é um aplicativo de banco de dados incorporado que é integrado ao nosso código na forma de um pacote. A vantagem do Chroma é a sua simplicidade. Se você precisa de um banco de dados de vetores para implementar a memória LLM no desenvolvimento de aplicativos LLM, ele suporta a pesquisa de linguagem de similaridade de texto e você não quer instalar um banco de dados de vetores independente, o Chroma é uma boa escolha. Atualmente, a biblioteca Chroma suporta duas linguagens: Python e JavaScript. Este tutorial é principalmente baseado em Python.
1. Instale o Chromadb
pip install chromadb
Nota: A versão atual do chromadb não é compatível com o Python 3.11. É recomendável fazer o downgrade da versão do Python.
2. Inicialize o cliente Chroma
import chromadb
chroma_client = chromadb.Client()
3. Crie uma coleção
Uma coleção é semelhante a uma tabela no banco de dados chroma, onde os dados vetoriais (incluindo documentos e outros dados de origem) são armazenados. Crie uma coleção da seguinte forma:
collection = chroma_client.create_collection(name="tizi365")
4. Adicione dados
Após definir uma coleção, adicione dados à coleção. O Chroma irá armazenar nossos dados e criar um índice vetorial especial com base no vetor dos dados de texto para facilitar consultas posteriores.
4.1. Calcular vetores usando o modelo de incorporação integrado
collection.add(
documents=["Este é um documento", "Este é outro documento"],
metadatas=[{"origem": "minha_origem"}, {"origem": "minha_origem"}],
ids=["id1", "id2"]
)
4.2. Especificar valores vetoriais ao adicionar dados
collection.add(
embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
documents=["Este é um documento", "Este é outro documento"],
metadatas=[{"origem": "minha_origem"}, {"origem": "minha_origem"}],
ids=["id1", "id2"]
)
5. Consultar dados
Agora você pode consultar conteúdos de texto semelhantes, e o Chroma retornará "n" resultados mais similares. Abaixo está um exemplo de consulta de conteúdo de documento semelhante com base no parâmetro de consulta_texts:
results = collection.query(
query_texts=["Este é um documento de consulta"],
n_results=2
)
Por padrão, os dados no Chroma são armazenados na memória, portanto os dados são perdidos quando o programa é reiniciado. Claro, você pode configurar o Chroma para persistir os dados no disco rígido, para que o programa carregue os dados do disco ao iniciar.