![[Databricks] AI Search 검색 결과에 출처 정보 포함하기 — source_file 컬럼 추가 데모 대표 이미지](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.1.1%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkY0NDExNTY5JTJGOTcwMTlkNGQwOTFlNjg2OTQxNjVlODdjZjU2Mjk0ZDc0NmVkNzIyNiUyRmxhcmdlLnBuZyUzRjE3ODE0MTI1MzY_aXhsaWI9cmItNC4xLjEmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTczYTQ1ODkwYzAxODk2NmQ5OGUxZGUwOTc0OThhOGZl%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3Da654625c15b54b504fd5f9ca21f0f55b?ixlib=rb-4.1.1&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjEuMSZ3PTk2MCZoPTMyNCZ0eHQ9JTVCRGF0YWJyaWNrcyU1RCUyMEFJJTIwU2VhcmNoJTIwJUUzJTgxJUFFJUU2JUE0JTlDJUU3JUI0JUEyJUU3JUI1JTkwJUU2JTlFJTlDJUUzJTgxJUFCJUU1JTg3JUJBJUU1JTg1JUI4JUU2JTgzJTg1JUU1JUEwJUIxJUUzJTgyJTkyJUU1JTkwJUFCJUUzJTgyJTgxJUUzJTgyJThCJTIwJUUyJTgwJTk0JTIwc291cmNlX2ZpbGUlMjAlRTMlODIlQUIlRTMlODMlQTklRTMlODMlQTAlRTMlODElQUUlRTglQkYlQkQlRTUlOEElQTAlRTMlODMlODclRTMlODMlQTImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz00OTIwZDVlMWY5NTdlMGE2ODdiNjU2YzFiNzk1MzdjNA&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjEuMSZ3PTgzOCZoPTU4JnR4dD0lNDAwZmYwMGRleDdmM2EmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz1mNmE2YmU2YjMzZDcwY2I5Yjg3ZTExZGVmZTgwMDdkZA&blend-x=242&blend-y=480&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&s=0f67eddc3faec9680805975d62e5b7ff)
[Databricks] AI Search 검색 결과에 출처 정보 포함하기 — source_file 컬럼 추가 데모
요약
Databricks AI Search를 사용하여 RAG 시스템 구축 시 검색 결과에 출처 정보(source_file, source_url)를 포함하는 방법을 설명합니다. 소스 테이블에 메타데이터 컬럼을 추가하고 검색 시 해당 컬럼을 지정하는 간단한 데모를 제공합니다.
핵심 포인트
- 소스 테이블에 메타데이터 컬럼을 추가하여 출처 정보 확보 가능
- similarity_search() 호출 시 columns 인수에 컬럼명 명시
- 인덱스 생성 시 별도의 특별한 옵션 설정 불필요
- RAG 시스템의 답변 신뢰도를 높이기 위한 필수 구현 단계
지난 기사에서는 Databricks AI Search의 인덱스 생성부터 유사도 검색(similarity search)까지를 Free Edition으로 실행했습니다. 검색 결과에는 chunk_id와 text만 반환되었지만, RAG(Retrieval-Augmented Generation)를 사용하는 경우 "이 답변은 어떤 파일에서 가져왔는가"라는 출처 정보도 필요하게 됩니다.
이 기사에서는 소스 테이블에 source_file과 source_url 컬럼을 추가하는 것만으로, similarity_search() 결과에 출처 정보를 포함할 수 있음을 데모합니다.
similarity_search()는 소스 테이블에 존재하는 컬럼이라면 무엇이든 반환할 수 있습니다. 인덱스 생성 시 특별한 옵션을 지정할 필요는 없습니다.
해야 할 일은 두 가지뿐입니다.
- 소스 테이블에 메타데이터 컬럼(
source_file,source_url등)을 추가한다 similarity_search()의columns인수에 해당 컬럼명을 포함한다
Query a vector search index [...] You can specify a set of columns to return.
- Databricks Community Cloud (Free Edition)
- 컴퓨팅: Serverless Starter Warehouse
- 검증일: 2026년 7월 19일
- 지난 기사에서 생성한 AI Search 엔드포인트
mcp-demo를 재사용
지난번과 동일한 샘플 데이터(samples.bakehouse.media_gold_reviews_chunked)를 사용하여, source_file과 source_url 컬럼을 추가한 테이블을 생성합니다.
%sql
CREATE OR REPLACE TABLE demo_catalog.ai_search_demo.reviews_with_source AS
SELECT
...
지난번 테이블(chunk_id와 text 2개 컬럼)에 대해, 이번에는 source_file(파일명을 나타내는 고정 문자열)과 source_url(원본 데이터의 review_uri를 유용)을 추가했습니다.
테이블을 확인하면 4개 컬럼(chunk_id, text, source_file, source_url)이 저장되어 있습니다. 모든 행의 source_file에는 bakehouse_media_reviews가, source_url에는 원본 데이터의 S3 경로가 들어 있습니다.
인덱스 생성 코드는 지난번과 거의 동일합니다. source_table_name에 새로운 테이블을 지정하고, index_name을 바꾸기만 하면 됩니다. 메타데이터 컬럼을 위한 특별한 지정은 없습니다.
%pip install databricks-vectorsearch --quiet
dbutils.library.restartPython()
from databricks.vector_search.client import VectorSearchClient
vsc = VectorSearchClient(disable_notice=True)
vsc.create_delta_sync_index(
...
지난 기사에서 엔드포인트 mcp-demo는 이미 생성되어 있었기 때문에, 엔드포인트 프로비저닝 대기 없이 몇 분 만에 인덱스가 온라인 상태가 되었습니다.
describe()로 상태를 확인하면 ONLINE_NO_PENDING_UPDATE(준비 완료) 상태입니다. indexed_row_count는 16입니다.
similarity_search()의 columns에 source_file과 source_url을 추가하기만 하면 됩니다.
results = idx.similarity_search(
columns=["chunk_id", "text", "source_file", "source_url"],
query_text="best bakery experience",
...
결과(results)의 manifest에는 5개 컬럼(chunk_id, text, source_file, source_url, score)이 포함되어 있습니다.
각 결과 행에는 리뷰 텍스트와 함께 source_file (bakehouse_media_reviews) 및 source_url (S3 상의 데이터 경로)이 반환됩니다. 이를 통해 "이 검색 결과가 어떤 파일과 어떤 URL에서 왔는지"를 판별할 수 있습니다.
이전 글과 이번 글의 차이점을 정리합니다.
| 항목 | 이전 (기본 데모) | 이번 (출처 정보 포함) |
|---|---|---|
| 소스 테이블의 컬럼 | chunk_id, text | chunk_id, text, source_file, source_url |
| 인덱스 생성 시 추가 옵션 | 없음 | 없음 (동일) |
similarity_search()의 columns | ["chunk_id", "text"] | ["chunk_id", "text", "source_file", "source_url"] |
| 결과에 포함된 정보 | 텍스트와 스코어(score)만 | 텍스트 + 출처 정보 + 스코어 |
인덱스 생성 측면에서는 아무런 변경이 없다는 점이 핵심입니다. 소스 테이블에 컬럼을 추가하는 것만으로 검색 결과에 출처가 포함되도록 할 수 있습니다.
RAG (Retrieval-Augmented Generation) 파이프라인에서는 검색 결과의 텍스트뿐만 아니라 "어디에서 인용했는지"를 사용자에게 보여줌으로써 답변의 신뢰성을 높일 수 있습니다.
# 검색 결과로부터 출처가 포함된 컨텍스트를 구축하는 예시
for row in results["result"]["data_array":]
chunk_id, text, source_file, source_url, score = row
...
source_file에는 용도에 맞는 값을 넣을 수 있습니다.
| 유스케이스 (Use Case) | source_file 예시 | source_url 예시 |
|---|---|---|
| 문서 검색 | 파일명 (manual_v2.pdf) | 파일 경로 또는 URL |
| 지식 베이스 (Knowledge Base) | 카테고리명 (FAQ, 규약) | 원본 페이지의 URL |
| 코드 검색 | 리포지토리명 (backend-api) | GitHub의 permalink |
similarity_search()는 소스 테이블에 존재하는 컬럼이라면 무엇이든 반환할 수 있습니다.- 출처 정보를 포함하려면 소스 테이블에
source_file등의 컬럼을 추가하고,columns인자에서 지정하기만 하면 됩니다. - 인덱스 생성 시 특별한 옵션은 필요하지 않습니다.
- RAG 파이프라인에서 "어디에서 인용했는지"를 사용자에게 제시할 수 있어 답변의 신뢰성 향상에 도움이 됩니다.
본 기사의 기술 기술은 2026년 7월 시점의 공식 문서를 바탕으로 합니다. AI Search는 GA(General Availability) 상태이며, 패키지 명칭의 이전 (databricks-vectorsearch → databricks-ai-search)이 진행 중이므로 향후 사양이 변경될 가능성이 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기