Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- java #문법
- sql #내일배움캠프 #스파르타코딩클럽
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- java
Archives
- Today
- Total
Hyeok의 웹 개발 블로그
<2025.06.04> 임베딩 본문
✅ 임베딩
- 텍스트(문자)를 숫자 벡터로 변환하는 작업
- 숫자로 변환된 벡터를 벡터 DB에 저장되어 나중에 유사한 질문 검색(RAG)등에 사용
- OpenAI의 대표 임베딩 모델 → text-embedding-ada-002
✅ Spring OpenAI 임베딩
- Spring AI는 OpenAI의 텍스트 입베딩 모델 지원
- OpenAI의 텍스트 임베딩은 텍스트 문자열의 연관성을 측정
- 임베딩은 부동 소수점 숫자로 구성된 벡터
- 두 벡터 간의 거리로 연관성 측정 → 가까우면 연관성 높고, 멀면 연관성 낮다.
✅ 필수 조건
- OpenAI 임베딩 모델에 엑세스 하려면 OpenAI로 API를 만들어야 한다.
- OpenAI API 키 페이지 에서 토큰 생성
- Spring AI 프로젝트는 openai.com 에서 얻은
spring.ai.openai.api-key값으로 설정해야 하는 구성 속성을 정의합니다.API Key
파일 에서 이 구성 속성을 설정할 수 있습니다
application.properties
spring.ai.openai.api-key=<your-openai-api-key>
API 키와 같은 민감한 정보를 처리할 때 보안을 강화하기위해 SPEL을 사용 하여 환경 변수 참조 가능
# In application.yml
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
# In your environment or .env file
export OPENAI_API_KEY=<your-openai-api-key>
또한 어플리케이션 코드에서 프로그래밍 방식으로 설정 할 수 있다.
// Retrieve API key from a secure source or environment variable
String apiKey = System.getenv("OPENAI_API_KEY");
✅ 자동 구성
- Spring AI는 OpenAI 임베딩 모델에 대한 Spring Boot 자동 구성을 제공한다.
- 프로젝트 Maven pom.xml 파일에 종속성 추가
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-openai</artifactId> </dependency>- or Gradle build.gradle 파일에 추가
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-openai'
}
✅ 임베딩 API를 위한 주소 설정
- OpenAI 임베딩 API는 별도의 주소를 설정 X
- 기본적으로 https://api.openai.com/v1/embeddings 엔드포인트 사용, Spring AI에서는 이를 자동으로 처리 → 별도의 주소값을 가져오지 않아도 무관
- 다음으로 컨트롤러와 서비스를 구현하면 별도의 WebClient 구성 없이도 OpenAI 임베딩 API와 자동으로 연동
- 입력된 텍스트를 바로 벡터 (List<Double>)로 변환하여 사용가능
- 이후 벡터를 PgVector DB에 저장하면 RAG에 활용할 수 있다.
'TIL > Spring' 카테고리의 다른 글
| <2025.05.19> 페이지네이션, 무한스크롤 (0) | 2025.05.19 |
|---|---|
| <2025.05.08> TestCode - 단위 테스트 (0) | 2025.05.08 |
| <2025.05.07> 연관관계 N+1 (0) | 2025.05.07 |
| <2025.05.01> 영속성 컨텍스트 (2) | 2025.05.01 |
| <2025.04.22> 배달 기능 프로젝트 피드백 (1) | 2025.04.22 |