import mlflow
@mlflow.trace
def rag_pipeline(question: str) -> str:
"""전체 RAG 파이프라인"""
docs = retrieve_documents(question)
answer = generate_answer(question, docs)
return answer
@mlflow.trace(span_type="RETRIEVER", name="document_search")
def retrieve_documents(query: str) -> list:
"""Vector Search에서 관련 문서 검색"""
results = vector_index.similarity_search(
query_text=query,
num_results=5
)
return results
@mlflow.trace(span_type="LLM", name="llm_call")
def generate_answer(question: str, context: list) -> str:
"""LLM에 질문과 컨텍스트를 전달하여 답변 생성"""
prompt = f"다음 문서를 참고하여 질문에 답해 주세요.\n\n문서:\n{context}\n\n질문: {question}"
response = client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 호출하면 전체 Trace가 자동 생성됩니다
answer = rag_pipeline("반품 정책이 어떻게 되나요?")