시작하기무료로 시작하기

검색 함수 만들기

Retrieval Augmented Generation(RAG) 워크플로에서 핵심 단계는 데이터베이스에서 데이터를 검색하는 일입니다. 이 연습에서는 마지막 연습 문제에서 사용할 중요한 과정을 수행하는 retrieve()라는 사용자 지정 함수를 설계해 보겠습니다.

이 연습은 강의의 일부입니다

Pinecone로 AI 애플리케이션 구축하기

강의 보기

연습 안내

  • Pinecone 클라이언트를 API 키로 초기화하세요(OpenAI 클라이언트는 client로 제공됩니다).
  • 네 개의 매개변수 query, top_k, namespace, emb_model을 받는 함수 retrieve를 정의하세요.
  • emb_model 인자를 사용해 입력 query를 임베딩하세요.
  • 함수에 전달된 namespace를 지정하여, 메타데이터와 함께 query_emb와 유사한 벡터 top_k개를 검색하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Initialize the Pinecone client
pc = Pinecone(api_key="____")
index = pc.Index('pinecone-datacamp')

# Define a retrieve function that takes four arguments: query, top_k, namespace, and emb_model
def retrieve(query, top_k, namespace, emb_model):
    # Encode the input query using OpenAI
    query_response = ____(
        input=____,
        model=____
    )
    
    query_emb = query_response.data[0].embedding
    
    # Query the index using the query_emb
    docs = index.query(vector=____, top_k=____, namespace=____, include_metadata=True)
    
    retrieved_docs = []
    sources = []
    for doc in docs['matches']:
        retrieved_docs.append(doc['metadata']['text'])
        sources.append((doc['metadata']['title'], doc['metadata']['url']))
    
    return retrieved_docs, sources

documents, sources = retrieve(
  query="How to build next-level Q&A with OpenAI",
  top_k=3,
  namespace='youtube_rag_dataset',
  emb_model="text-embedding-3-small"
)
print(documents)
print(sources)
코드 편집 및 실행