VectorDB 중 하나인 chromaDB를 설치해보자.
python 기반으로 pip 명령어만으로도 쉽게 설치가 되고, OS환경은 WSL(Ubuntu) 기반에 Server로 띄워 사용하려고 한다.
client는 윈도우에서 python으로 접속해서 쓰고자 한다.
# Python 설치
[...]$ wget https://www.python.org/ftp/python/3.10.10/Python-3.11.3.tgz --no-check-certificate
[...]$ tar -zxvf Python-3.10.10.tgz
[...]$ cd Python-3.10.10
[...]$ ./configure
[...]$ make
[...]$ sudo make install
[...]$ vi ~/.bashrc
### .bashrc ###
... 생략 ...
alias python='/usr/lib/python3.10'
alias pip='/usr/lib/pip3.10'
# chroma alias 미리 해놀게요
alias chroma='/usr/lib/python3.10 -m chromadb.cli.cli'
###
[...]$ source ~/.bashrc
[...]$ pip install chromadb
chroma run --host=0.0.0.0 --port=8000 --path /mnt/d/chroma_data
import chromadb
client = chromadb.HttpClient(host='localhost', port=8000)
# chroma 에서 각각의 데이터를 document라고 하고,
# Document를 그룹핑 해서 관리하는 개념이 collection 입니다.
# collection을 생성합니다.
posts = client.create_collection(
name='posts'
)
# 예시 데이터를 입력합니다.
post1 = 'apple is delicious'
post2 = 'banana is sweet'
post3 = 'New York is big'
post4 = 'Paris is romantic'
posts.add(
documents=[post1, post2, post3, post4],
ids=["1", "2", "3", "4"]
)
# C:\Users\namkon\.cache\chroma\onnx_models\all-MiniLM-L6-v2\onnx.tar.gz: 100%|████| 79.3M/79.3M [00:10<00:00, 8.25MiB/s]
# [!] ChromaDB에서 임베딩 모델을 지원을 해줘서, 임베딩 없이 Document를 넣어도 자동 임베딩 되어 저장이 된다!!
result = posts.query(
query_texts=['yellow'],
n_results=1
)
print(result)
-----
{'ids': [['2']], 'distances': [[1.4290768926942459]], 'embeddings': None, 'metadatas': [[None]], 'documents': [['banana is sweet']], 'uris': None, 'data': None, 'included': ['metadatas', 'documents', 'distances']}
chromaDB 는 설치와 사용이 매우 간편했고, 별도 임베딩 과정 없이 DB에 구문을 넣으면 DB에서 임베딩 하여 입력이 되어 매우 편했다. 하지만, 실제 운영환경으로 사용하기에는 이중화 방법에 대해 가이드가 없고, 안정성도 다소 부족하게 느껴진다.