Database

[ChromaDB] ChromaDB 사용해보기

dev_minpark 2024. 10. 11. 15:14

Vector Store ChromaDB 를 사용해보자 

https://cookbook.chromadb.dev/running/running-chroma/#docker-compose-without-cloning-the-repo

version: '3.9'
 
networks:
  net:
    driver: bridge
services:
  chromadb:
    image: chromadb/chroma:0.5.11
    volumes:
      - ./chromadb:/chroma/chroma
    environment:
      - IS_PERSISTENT=TRUE
      - PERSIST_DIRECTORY=/chroma/chroma # this is the default path, change it as needed
      - ANONYMIZED_TELEMETRY=${ANONYMIZED_TELEMETRY:-TRUE}
    ports:
      - 8000:8000
    networks:
      - net

docker-compose 로 크로마 서버를 띄워준다.

http://localhost:8000/docs 인터페이스정의서를 확인

 

ChromaDB Admin (선택)

ChromaDB를 위한 정식 UI 도구는 아직 존재하지 않기 때문에 비공식 오픈소스 ChromaDB Admin 을 활용해보자.

https://github.com/flanker/chromadb-admin
Git Clone 후 실행

 

Spring AI 연동

// build.gradle
// chroma
implementation 'org.springframework.ai:spring-ai-chroma-store-spring-boot-starter'
# application.yml
spring:
 ai:
   vectorstore:
     chroma:
       client:
         host: http://localhost
         port: 8000
       # 컬렉션 명
       collection-name: ${COLLECTION_NAME}
       # 데이터베이스 초기화
       initialize-schema: true

Resource

테스트 데이터 작성

@Service
@RequiredArgsConstructor
@Slf4j
public class DocumentService {
    private final VectorStore vectorStore;
 
    @Value("classpath:templates/resource.txt")
    private Resource resource;
 
    public void save() {
        TextReader reader = new TextReader(resource);
        List<Document> documents = new TokenTextSplitter().split(reader.read());
        vectorStore.add(documents);
    }
}

 

'Database' 카테고리의 다른 글

[MySQL] EXPAIN, ANALYZE  (0) 2024.08.22