Chroma 설치 및 실행
테스트 환경
windows의 docker.desktop 사용
설치
docker pull ghcr.io/chroma-core/chroma
기존 이미지를 지우고 다시 하려면
docker ps
docker stop [CONTAINER ID]
docker rm [CONTAINER ID]
Chroma 실행
chroma run
Docker를 사용 중이라면:
docker run -d --name chroma-server -p 8000:8000 ghcr.io/chroma-core/chroma
docker run -d --name chroma-server -p 8000:8000 -v ~/chroma_data:/data ghcr.io/chroma-core/chroma // 환경변수(볼륨마운트 추가)
docker run -d --name chroma-server -p 8000:8000 -e CHROMA_SERVER_CORS_ALLOW_ORIGINS="*" ghcr.io/chroma-core/chroma // cors 대처용: 웹브라우저에 구현시 (nodejs에서는 cors 처리 안해도 됢)
- error
configured to allow requests from the current origin using the CHROMA_SERVER_CORS_ALLOW_ORIGINS environment variable.
Chroma 서버가 실행 중인지 확인:
아래 페이지가 뜨면 정상적으로 서비스가 실행 중인 것이다.
curl -I http://localhost:8000/docs
http://localhost:8000/docs/ //api 문서 설명
http://localhost:8000/api/v2/heartbeat // 최근 버전
http://localhost:8000/api/v1/heartbeat // 최근 버전
사용법
nodejs 에서 사용법을 설명드리려고 합니다.
보통 2가지 방식으로 사용하는 하나는 ChromaClient 직접 호출방식과 api 를 이용한 호출 방식이 있습니다. ChromaClient 직접 호출시 cors 문제가 있지만 ChromaClient이 더 직관적입니다.
1. ChromaClient 를 이용하는 방법
- host가 명시 되지 않으면 기본적으로 "http://localhost:8000" 바라볾
- ~~const client = new ChromaClient({ host: 'http://localhost:8000' });~~
import { ChromaClient } from 'chromadb';
const client = new ChromaClient(); // localhost:8000' 혹은 127.0.0.1:8000' 일경우 이 부분 생략
// const client = new ChromaClient({ url: 'http://localhost:8000' }); // 원격 서버일 경우
async function testChromaConnection() {
try {
const collections = await client.listCollections();
console.log('✅ 연결 성공! 현재 컬렉션 목록:', collections);
} catch (err) {
console.error('❌ 연결 실패:', err.message);
}
}
testChromaConnection();
2. api를 이용하는 방법
import axios from 'axios';
const chroma = axios.create({
baseURL: 'http://localhost:8000',
headers: {
'Content-Type': 'application/json'
}
});
async function test() {
try {
const res = await chroma.get('/api/v2/heartbeat');
console.log('✅ 서버 응답:', res.data);
} catch (err) {
console.error('❌ 연결 실패:', err.message);
}
}
test();