Oracle AI Vector Search는 키워드가 아닌 의미론을 기반으로 데이터를 쿼리할 수 있는 인공지능(AI) 워크로드를 위해 설계되었습니다. Oracle AI Vector Search의 가장 큰 장점 중 하나는 비정형 데이터에 대한 의미론적 검색을 단일 시스템에서 비즈니스 데이터에 대한 관계형 검색과 결합할 수 있다는 것입니다. 이는 강력할 뿐만 아니라 전문화된 vector database를 추가할 필요가 없어 여러 시스템 간의 데이터 분산으로 인한 문제를 제거하므로 훨씬 더 효과적입니다. 또한, vector는 다음과 같은 Oracle Database의 가장 강력한 기능들을 모두 활용할 수 있습니다: 이 가이드는 Oracle AI Vector Search 내의 Summary 기능을 사용하여 OracleSummary를 통해 문서에 대한 요약을 생성하는 방법을 보여줍니다. Oracle Database를 처음 시작하는 경우, 데이터베이스 환경 설정에 대한 훌륭한 소개를 제공하는 무료 Oracle 23 AI를 살펴보는 것을 고려해보세요. 데이터베이스 작업 시 기본적으로 system user를 사용하지 않는 것이 좋으며, 보안 강화와 사용자 정의를 위해 자체 사용자를 생성할 수 있습니다. 사용자 생성에 대한 자세한 단계는 Oracle에서 사용자를 설정하는 방법도 보여주는 엔드 투 엔드 가이드를 참조하세요. 또한 사용자 권한을 이해하는 것은 데이터베이스 보안을 효과적으로 관리하는 데 중요합니다. 이 주제에 대한 자세한 내용은 사용자 계정 및 보안 관리에 대한 공식 Oracle 가이드에서 확인할 수 있습니다.

사전 요구사항

Oracle AI Vector Search와 함께 LangChain을 사용하려면 Oracle Python Client driver를 설치하세요.
# pip install oracledb

Oracle Database에 연결하기

다음 샘플 코드는 Oracle Database에 연결하는 방법을 보여줍니다. 기본적으로 python-oracledb는 Oracle Database에 직접 연결하는 ‘Thin’ 모드로 실행됩니다. 이 모드는 Oracle Client 라이브러리가 필요하지 않습니다. 그러나 python-oracledb가 이를 사용할 때 일부 추가 기능을 사용할 수 있습니다. Oracle Client 라이브러리를 사용할 때 Python-oracledb는 ‘Thick’ 모드에 있다고 합니다. 두 모드 모두 Python Database API v2.0 사양을 지원하는 포괄적인 기능을 제공합니다. 각 모드에서 지원되는 기능에 대해 설명하는 다음 가이드를 참조하세요. thin-mode를 사용할 수 없는 경우 thick-mode로 전환하는 것이 좋습니다.
import sys

import oracledb

# please update with your username, password, hostname and service_name
username = "<username>"
password = "<password>"
dsn = "<hostname>/<service_name>"

try:
    conn = oracledb.connect(user=username, password=password, dsn=dsn)
    print("Connection successful!")
except Exception as e:
    print("Connection failed!")
    sys.exit(1)

요약 생성하기

Oracle AI Vector Search LangChain 라이브러리는 문서 요약을 위해 설계된 API 모음을 제공합니다. Database, OCIGENAI, HuggingFace 등과 같은 여러 요약 제공자를 지원하여 사용자가 자신의 요구에 가장 적합한 제공자를 선택할 수 있습니다. 이러한 기능을 활용하려면 사용자는 지정된 대로 요약 매개변수를 구성해야 합니다. 이러한 매개변수에 대한 자세한 내용은 Oracle AI Vector Search Guide book을 참조하세요. 참고: 사용자는 Oracle의 자체 및 기본 제공자인 ‘database’ 이외의 일부 타사 요약 생성 제공자를 사용하려는 경우 proxy를 설정해야 할 수 있습니다. proxy가 없는 경우 OracleSummary를 인스턴스화할 때 proxy 매개변수를 제거하세요.
# proxy to be used when we instantiate summary and embedder object
proxy = "<proxy>"
다음 샘플 코드는 요약을 생성하는 방법을 보여줍니다:
from langchain_community.utilities.oracleai import OracleSummary
from langchain_core.documents import Document

"""
# using 'ocigenai' provider
summary_params = {
    "provider": "ocigenai",
    "credential_name": "OCI_CRED",
    "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/summarizeText",
    "model": "cohere.command",
}

# using 'huggingface' provider
summary_params = {
    "provider": "huggingface",
    "credential_name": "HF_CRED",
    "url": "https://api-inference.huggingface.co/models/",
    "model": "facebook/bart-large-cnn",
    "wait_for_model": "true"
}
"""

# using 'database' provider
summary_params = {
    "provider": "database",
    "glevel": "S",
    "numParagraphs": 1,
    "language": "english",
}

# get the summary instance
# Remove proxy if not required
summ = OracleSummary(conn=conn, params=summary_params, proxy=proxy)
summary = summ.get_summary(
    "In the heart of the forest, "
    + "a lone fox ventured out at dusk, seeking a lost treasure. "
    + "With each step, memories flooded back, guiding its path. "
    + "As the moon rose high, illuminating the night, the fox unearthed "
    + "not gold, but a forgotten friendship, worth more than any riches."
)

print(f"Summary generated by OracleSummary: {summary}")

엔드 투 엔드 데모

Oracle AI Vector Search의 도움으로 엔드 투 엔드 RAG pipeline을 구축하려면 전체 데모 가이드 Oracle AI Vector Search End-to-End Demo Guide를 참조하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I