더 스마트한 쿼리 환경을 위해 Elasticsearch와 함께 Azure LLM 함수 사용

유연한 하이브리드 검색 결과를 제공하기 위해 Elasticsearch와 함께 Azure Gen AI LLM 함수를 사용하는 부동산 검색 앱의 예를 살펴보세요. GitHub 코드스페이스에서 예제 앱을 구성하고 실행하는 방법을 단계별로 확인하세요.

Elasticsearch는 업계 최고 수준의 생성형 AI 도구 및 다양한 공급업체와 기본적으로 연동됩니다. Elastic 벡터 데이터베이스를 활용해 진행 중인 RAG 기본 넘어서기 또는 프로덕션 수준 앱 구축 웨비나를 확인해 보세요.

사용 사례에 가장 적합한 검색 솔루션을 구축하려면 무료 클라우드 체험판을 시작하거나 로컬 기기에서 Elastic을 지금 사용해 보세요.

정확성. 중요한 순간에는 매우 중요합니다. 특정 항목을 검색할 때는 정확성이 매우 중요합니다. 그러나 너무 정확한 쿼리는 결과를 반환하지 않는 경우도 있으므로, 잠재적으로 관련성이 있는 데이터를 추가로 찾기 위해 쿼리 범위를 유연하게 확장하는 것이 유리합니다.

이 블로그 게시물에서는 Elasticsearch와 Azure Open AI를 사용하여 매우 구체적인 부동산을 검색할 때 정확한 결과를 찾는 동시에 특정 일치 항목을 찾을 수 없는 경우에도 관련 결과를 제공하는 방법을 보여주는 예제 앱을 만드는 방법에 대해 설명합니다. 검색 템플릿과 함께 Elasticsearch 인덱스를 생성하는 데 필요한 모든 단계를 안내해드리겠습니다. 그런 다음 Azure OpenAI를 사용하여 사용자 쿼리를 받아 놀랍도록 사용자 정의된 결과를 생성할 수 있는 Elasticsearch 검색 템플릿 쿼리로 변환하는 앱을 만드는 방법에 대한 전체 프로세스를 설명합니다.

다음은 예제 부동산 검색 앱을 만드는 데 사용할 모든 리소스 목록입니다:

스마트 쿼리 워크플로

이 워크플로는 LLM, LLM 도구, 검색을 결합하여 자연어 쿼리를 구조화되고 관련성 높은 검색 결과로 변환합니다:

  • LLM(대규모 언어 모델 ) - 복잡한 사용자 쿼리를 해석하고 도구를 오케스트레이션하여 검색 의도를 추출하고 컨텍스트를 보강합니다.
  • LLM 도구 - 각 LLM 도구는 이 게시물을 위해 만든 C# 프로그램입니다. 세 가지 도구가 있습니다:
    • 매개변수 추출 도구: 쿼리에서 침실, 욕실, 기능, 가격 등의 주요 속성을 가져옵니다.
    • 지오코드 도구: 공간 필터링을 위해 위치 이름을 위도/경도로 변환합니다.
    • 검색 도구: Elasticsearch 검색 템플릿을 쿼리 매개변수로 채우고 검색을 실행합니다. 하이브리드 검색 - 내장된 ML 추론을 통해 하이브리드 검색(전체 텍스트 + 고밀도 벡터)을 실행합니다. 이러한 계층화된 접근 방식은 최종 사용자에게 더욱 스마트하고 컨텍스트를 인식하는 쿼리 환경을 보장합니다.

애플리케이션 아키텍처

다음은 예제 앱의 시스템 아키텍처 다이어그램입니다. 코드스페이스 Jupyter 노트북을 사용해 Elastic Cloud와 상호 작용할 것입니다.

필수 구성 요소

[@portabletext/react] Unknown block type "block", specify a component for it in the `components.types` prop

코드스페이스에서 예제 앱 리포지토리 복제하기

먼저 예제 애플리케이션의 코드를 복제하여 시작합니다. 애플리케이션을 복제하고 실행하는 방법을 제공하는 GitHub 코드스페이스에서 이 작업을 수행할 수 있습니다. 새 코드스페이스를 클릭합니다 .

그런 다음 리포지토리 드롭다운에서 jwilliams-elastic/msbuild-intelligent-query-demo 리포지토리를 선택하고 코드스페이스 생성을 클릭합니다.

.env 만들기 파일

우리는 Python Jupyter Notebook을 사용해 Elastic Cloud에 액세스하고 상호 작용할 것이며, 구성 파일에 저장된 구성 값을 사용해 그렇게 할 것입니다. 노트북의 구성 파일은 파일 이름이 .env여야 합니다. 를 클릭하시면 지금 바로 만들 수 있습니다.

  1. GitHub 코드스페이스에서 새 파일 버튼을 클릭하고 .env라는이름의 파일을 추가합니다.
  2. 새로 만든 .env 파일에 다음 내용을 추가합니다. 파일

보시다시피.env에 추가해야 하는 몇 가지 누락된 값인ELASTIC_URL과 ELASTIC_API_KEY가 있습니다. 파일입니다. 이제 예제 앱의 검색 기능을 구동할 백엔드 역할을 할 Elasticsearch 서버리스 프로젝트를 생성하여 이를 준비해 보겠습니다.

Elastic 서버리스 프로젝트 생성

  1. cloud.elastic.co로 이동하여 새 서버리스 프로젝트 생성을 클릭합니다.
  2. Elasticsearch 솔루션을 보려면 다음을 클릭하세요.
  3. 벡터에 최적화됨을선택합니다.
  4. 클라우드 공급자를 Azure로설정
  5. 서버리스 프로젝트 만들기를클릭합니다.
  6. 기본 탐색 메뉴에서 시작하기를 클릭하고 아래로 스크롤하여 연결 세부 정보를복사합니다.
  7. 복사 버튼을 클릭하여 연결 세부 정보에서 Elasticsearch 엔드포인트를 복사합니다.
  8. .env 업데이트 파일을 복사된 Elasticsearch 엔드포인트로 설정합니다.

Elastic API 키 생성

  1. Elasticsearch 시작하기 페이지를 열고,API 키 추가 섹션에서 새로 만들기를 클릭합니다.
  2. 이름입력
  3. API 키 생성을클릭합니다.
  4. 복사 버튼을 클릭하여 API 키 값을 복사합니다.
  5. 다시 코드스페이스로 돌아가서 .env 파일을 열어 편집하고 복사한 값을 붙여넣어 ELASTIC_API_KEY를설정합니다.

코드스페이스 노트북을 열고 라이브러리 종속성을 설치합니다.

파일 탐색기에서 VectorDBSetup.ipynb 파일을 선택해 노트북을 엽니다. 노트북이 로드된 후,라이브러리 설치라는 제목의 노트북 섹션을 찾습니다. 섹션 재생 버튼을 클릭합니다.

GitHub 코드스페이스에서 노트북을 처음 실행하는 경우, 코드스페이스 커널을 선택하고 Python 환경을 구성하라는 메시지가 표시됩니다.

코드스페이스 노트북을 사용하여 임포트를 정의하고 환경 변수를 로드하세요.

노트북의 다음 섹션인 가져오기 정의 및 환경 변수 로드 섹션으로 이동합니다. 섹션 재생 버튼을 클릭합니다.

이 코드는 노트북에서 사용하는 Python 라이브러리를 가져오고 .env 파일에서 환경 변수를 로드합니다.를 만들 수 있습니다.

코드스페이스 노트북을 사용하여 Elastic ML 추론 엔드포인트 만들기

다음 노트북 섹션인 ML 추론 엔드포인트 만들기로 이동합니다. 섹션 재생 버튼을 클릭합니다.

이렇게 하면 데이터에서 텍스트 임베딩을 생성하는 데 사용할 새로운 ML 추론 엔드포인트가 Elasticsearch 프로젝트에 생성됩니다. 텍스트 임베딩은 의미론적 검색을 강화하기 위해 Elasticsearch에 저장될 텍스트의 벡터 표현입니다.

코드스페이스 노트북을 사용하여 Elasticsearch 인덱스 만들기

다음 노트북 섹션의 Elasticsearch 인덱스 생성으로 이동합니다. 섹션 재생 버튼을 클릭합니다.

이렇게 하면 예제 데이터와 ML 추론 엔드포인트를 통해 생성된 모든 관련 벡터 데이터를 저장할 Elasticsearch 인덱스가 생성됩니다.

코드스페이스 노트북을 사용하여 Elasticsearch 검색 템플릿 만들기

검색 템플릿이라는 제목의 다음 노트북 섹션으로 계속 진행합니다. 섹션 재생 버튼을 클릭합니다.

이렇게 하면 사용자의 검색 쿼리에서 파싱된 단어로 채워진 템플릿으로 예제 앱에서 사용할 검색 템플릿이 만들어집니다. 이를 통해 Elasticsearch 인덱스에서 데이터를 쿼리할 때 얼마나 구체적으로 쿼리할지 구성하고 제어할 수 있습니다.

코드스페이스 노트북을 사용하여 Elasticsearch 인덱스로 데이터 수집하기

노트북의 다음 섹션인 속성 데이터 수집으로 이동합니다. 섹션 실행 버튼을 클릭합니다.

이 코드 섹션을 실행하면 properties.jsonl 파일에 포함된 예제 데이터가 일괄 로드됩니다. 몇 분 후 프로세스가 성공적으로 완료되었다는 확인 메시지가 표시됩니다. Elastic Cloud의 인덱스 관리 섹션으로 이동하여 인덱스에 예상 레코드가 포함되어 있는지 확인할 수 있습니다.

앱설정.json을 생성하여 C# 앱을 구성합니다.

Elasticsearch 인덱스가 생성되고 데이터로 채워졌으므로 이제 Elastic 및 Azure Cloud와 함께 작동하도록 예제 앱을 구성할 준비가 되었습니다. C# 예제 앱은 appsettings.json이라는 파일을 사용하여 API 키와 같은 액세스 정보를 저장하고 로드합니다. 이제 코드스페이스의 편집기를 사용하여 앱설정.json 파일을 생성합니다.

1.홈파인더앱 폴더에 앱설정.json을 생성합니다.

2. 앱설정.json 파일에 다음 코드를 붙여넣습니다.

3. 3.ElasticSettings 섹션에서 UrlApiKey 값을 찾습니다. .env에서 설정한 값과 동일한 값으로 설정합니다. 파일을 이전 단계에 추가합니다.

Azure OpenAI 서비스 만들기

예제 앱은 Azure OpenAI를 사용하여 앱 사용자의 쿼리를 구문 분석한 다음, 사용자가 검색하는 내용을 유연하게 전달하기 위해 검색 템플릿을 채워서 Elasticsearch에 요청을 제출할 것입니다.

  1. 새 브라우저 탭을 열고 Azure 포털에서 AI 파운드리 | Azure OpenAI로 이동합니다. 생성]을 클릭합니다.
  2. 만들기 양식에서 리소스 그룹을 선택합니다.
  3. 이름입력
  4. 요금제선택
  5. 다음클릭
  6. 네트워크 탭에서 다음을클릭합니다.
  7. 태그 탭에서 다음을클릭합니다.
  8. 검토 및 제출 탭에서 만들기를클릭합니다.
  9. 생성이 완료되면 리소스로 이동을클릭합니다.
  10. 왼쪽 탐색 메뉴에서 키 및 엔드포인트를 선택합니다.
  11. 엔드포인트를 복사하여 코드스페이스 편집기가 열려 있는 브라우저 탭에서 생성한 앱설정.json 파일에 붙여넣습니다.
  12. 그런 다음 Azure OpenAI 키 및 엔드포인트 페이지가 포함된 브라우저 탭으로 돌아갑니다. 키 1의 복사 버튼을 클릭하고 복사한 값을 코드스페이스 편집기가 열려 있는 브라우저 탭에서 앱설정.json 파일에 다시 붙여넣습니다.

Azure Open AI 서비스에 gpt-4o 모델 배포 추가

이제 Azure OpenAI 서비스가 실행 중이지만 예제 앱에 필요한 LLM 기능을 제공하려면 여전히 모델 배포가 필요합니다. 다양한 모델 중에서 선택할 수 있습니다. 생성한 앱설정.json 파일에 이미 지정되어 있으므로 gpt-4o를 배포해 보겠습니다.

  1. Azure AI 파운드리로 이동하여 배포 만들기를클릭합니다.
  2. gpt-4o를 검색하고 결과에서 선택합니다.
  3. 확인을 클릭하여 선택합니다.
  4. 배포를 클릭하여 모델을 배포합니다.

gpt-4o 모델을 성공적으로 배포했으면 왼쪽 탐색 메뉴에서 배포를 선택하고 gpt-4o 배포가 성공 상태와 함께 나열되는지 확인할 있습니다.

Azure 맵 계정 만들기

예제 앱의 사용자가 특정 지역의 부동산 매물을 검색할 수 있기를 바라지만, 너무 구체적일 필요는 없습니다. 누군가 지역 농산물 직판장 근처의 부동산을 검색하려는 경우 Azure Maps는 OpenAI LLM이 시장의 위도 및 경도 좌표를 가져오는 데 사용할 수 있는 서비스입니다. 그런 다음 좌표는 특정 위치 및 지리적 거리 고려 사항을 포함하는 사용자 쿼리에 대해 Elasticsearch로 전송되는 검색 템플릿 기반 요청에 포함될 수 있습니다.

  1. Azure 맵 계정에서 만들기를 클릭합니다.
  2. 리소스 그룹선택
  3. 이름입력
  4. 라이선스 및 개인정보처리방침에 동의
  5. 검토 및 생성을클릭합니다 .
  6. 만들기를클릭합니다.
  7. 계정 생성이 완료되면 리소스로 이동을클릭합니다.
  8. 왼쪽 탐색 메뉴에서 인증을 클릭합니다.
  9. 기본 키 값을 복사하여 코드스페이스 편집기가 포함된 브라우저 탭의 앱설정.json 파일의 AzureMapsSettings 섹션에 ApiKey의 값으로 붙여넣습니다.

예제 앱을 사용해 보세요.

이제 재미있는 부분입니다. 이제 예제 앱을 실행할 차례입니다. 앱을 구동하는 데 필요한 Elastic Cloud 및 Azure Cloud 리소스와 함께 모든 구성 세부 정보가 준비되어 있습니다.

1. 코드스페이스 편집기에서 터미널 창을 엽니다.

2. 다음 명령을 사용하여 활성 디렉터리를 예제 앱 폴더로 변경합니다.

3. 3. 다음 닷넷 명령을 사용하여 앱을 실행합니다.

4. 4. 브라우저에서 열기 버튼이 나타나면 클릭합니다.

5. 기본 검색을 테스트한 다음 사용자 지정 검색을 시도해 보세요. 검색 결과를 생성하기 위해 백엔드에서 수행되는 작업에 대한 자세한 내용을 보려면 도구 호출옆에 있는 표시 링크를 클릭하면 됩니다.

보너스: GPT-4o를 실제로 테스트해보고 싶으시다면 다음 검색을 시도해보세요: 침실 30개 이상, 욕실 20개 이상, 수영장과 차고가 있고 해변 근처에 있는 20만 달러 미만의 디즈니 월드 플로리다 인근 숙소를 찾고 있습니다. 이 쿼리는 검색 도구를 여러 번 호출한 후 결과를 반환합니다.

Elastic은 검색 AI를 위한 솔루션입니다

실행 중인 앱은 검색 템플릿을 기본 데이터 소스로 사용하여 Elasticsearch를 통한 Gen AI LLM 가이드 검색의 예입니다. 예제 앱을 자유롭게 실험하고 사용자 지정하여 정확하면서도 유연한 검색 환경을 만들어 사용자가 원하는 것을 찾을 수 있도록 하세요.

읽어주셔서 감사합니다. Elastic Cloud를 사용해 보세요.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요