검색 함수 만들기
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)