[LLM] Google Cloud Discovery Engine 데이터 스토어 업로드 포맷

1. Google Cloud Discovery Engine이란? Google Cloud Discovery Engine은 구글 클라우드 플랫폼에서 제공하는 검색 및 추천 서비스로, 웹사이트나 앱 내에서 사용자가 원하는 정보를 쉽고 빠르게 찾을 수 있도록 도와주는 서비스로 다음과 같은 특징을 가진다. 고급 검색 기능 : 단순 키워드 검색이 아닌, 사용자의 의도에 맞춰 의미를 파악하고 관련 콘텐츠를 제안하는 자연어 처리(NLP) 기반 검색을 지원 개인화된 추천 : 머신러닝 기반 추천엔진을 활용, 취향과 행동 패턴에 맞춘 추천 콘텐츠 제공 확장 가능성 : 다양한 규모와 범위의 콘텐츠에 대해 빠른 검색 및 추천 성능유지 2. 문제상황 Google cloud discovery engine을 활용해 rag를 고도화 시도하던 중, 기존 데이터베이스의 단순 question, answer 필드구조를 csv형태로 업로드하던 방식을 벗어나 metadata, description 필드를 구성하고자 하였다. content필드를 만족하는 데이터 구조를 구성하기 위해 기존 데이터셋을 discovery engine이 요구하는 특정 struct_value, string_value 타입의 jsonl 포맷으로 변환하는 과정에서 여러 에러를 만나게 되었다. ...

December 16, 2024 · Jun Kang

[Spring] 테스트 4 - 얼마나 깊게 테스트 코드를 작성해야 하는가?

4. HOW DEEP - 얼마나 깊게 테스트 코드를 작성해야 하는가? 4.1 테스트 깊이를 결정하는 기준 테스트 깊이를 설정할 때는 다음과 같은 기준을 고려해야 합니다: 테스트 피라미드(Test Pyramid): 테스트 피라미드는 테스트 종류에 따른 계층 구조를 보여줍니다. 일반적으로 단위 테스트가 가장 많고, 그다음으로 통합 테스트, 시스템 또는 E2E(End-to-End) 테스트가 위치합니다. 단위 테스트(Unit Tests): 가장 많은 비중을 차지하며, 작은 코드 단위를 독립적으로 테스트합니다. 통합 테스트(Integration Tests): 여러 모듈이 상호작용하는지 테스트합니다. E2E 테스트(End-to-End Tests): 실제 사용자 관점에서 전체 시스템이 잘 작동하는지 확인합니다. 위험 기반 테스트(Risk-Based Testing): 비즈니스 중요도와 잠재적 위험 요소에 따라 테스트 우선순위를 설정합니다. 비즈니스에 중요한 기능이나 리스크가 높은 부분에 대한 테스트는 더 깊이 있게 수행합니다. 유스 케이스 기반 테스트: 핵심 사용자 흐름과 엣지 케이스를 기반으로 테스트를 작성합니다. 실제로 사용자가 자주 사용하는 기능이나 예외적인 상황에서의 동작을 검증하는 것이 중요합니다. 현실적인 제약과 팀 역량 고려: 모든 부분을 깊이 테스트하는 것은 시간과 리소스 측면에서 비효율적일 수 있습니다. 팀의 역량과 프로젝트 일정 등을 고려하여 테스트 깊이를 조정하는 것이 필요합니다. ...

September 22, 2024 · Jun Kang

[Spring] 테스트 3 - 언제 테스트 코드를 적용해야 하는가?

3. WHEN - 언제 테스트 코드를 적용해야 하는가? 3.1 TDD와 BDD의 개념 및 적용 시점 TDD (Test-Driven Development): TDD는 테스트를 먼저 작성하고, 그 테스트를 통과할 수 있는 최소한의 코드를 작성하며 개발을 진행하는 방법론입니다. TDD는 테스트를 통해 명확한 요구사항을 확인하고 코드 품질을 보장하는 방법으로 활용됩니다. 레드-그린-리팩터 사이클: TDD의 기본 개발 사이클은 레드 단계 (실패하는 테스트 작성) → 그린 단계 (테스트를 통과하기 위한 코드 작성) → 리팩터 단계 (코드 정리 및 최적화)로 이루어집니다. 적용 시점: 새로운 기능을 개발하거나 기존 코드를 리팩터링 할 때, TDD를 통해 코드의 안정성과 유지보수성을 높일 수 있습니다. 이미지출처: https://medium.com/pilar-2020/applying-test-driven-development-6d6d3af186cbApplying\ Test-Driven\ Development ...

September 22, 2024 · Jun Kang

[Spring] 테스트 2 - 테스트 코드를 어떻게 작성해야 하는가?

2. HOW - 테스트 코드를 어떻게 작성해야 하는가? 2.1 테스트 케이스 선택 방법 첫 번째 테스트의 중요성: 구현하기 가장 쉬운 테스트부터 시작하는 것이 좋습니다. 예외적인 상황이나 가장 빠르게 개발할 수 있는 테스트 케이스를 먼저 작성하고, 점차 확장해 나갑니다. 점진적 확장: 쉬운 테스트부터 시작해 점차 복잡한 테스트로 나아가면서 시스템의 안정성을 검증합니다. 2.2 TDD (Test-Driven Development) 방법론 TDD는 테스트 주도 개발 방식으로, 테스트 코드를 먼저 작성하고 이를 기반으로 프로덕션 코드를 작성하는 방식입니다. TDD는 다음과 같은 세 단계를 따릅니다: ...

September 22, 2024 · Jun Kang

[Spring] 테스트 1 - 왜 테스트 코드를 작성해야 하는가?

1. WHY - 왜 테스트를 작성해야 하는가? 1.1 테스트 코드의 중요성 테스트 코드는 소프트웨어 개발에서 매우 중요한 역할을 합니다. 기능을 수정하거나 새로운 기능을 추가할 때 코드가 안정적으로 작동하는지 확인할 수 있는 수단이 바로 테스트 코드입니다. 이를 통해 예상하지 못한 버그를 방지하고, 코드 품질을 높일 수 있습니다. 1.2 테스트 코드 작성의 장점 1.2.1 안정적인 개발 환경 구축 테스트 코드는 코드의 변경이 다른 기능에 미치는 영향을 최소화하는 데 도움을 줍니다. 개발자는 자신 있게 코드를 수정하거나 리팩터링 할 수 있으며, 기존 기능이 예상대로 작동하는지 검증할 수 있습니다. ...

September 22, 2024 · Jun Kang