medirag / tests /rag /test_llama_index_wf.py
alvinhenrick's picture
upgrade kdbai.py
402a008 unverified
import pytest
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
from medirag.cache.local import LocalSemanticCache
# from medirag.index.kdbai import KDBAIDailyMedIndexer
from medirag.index.local import LocalIndexer
from medirag.rag.llama_index import WorkflowRAG
from medirag.rag.qa_rag import QuestionAnswerRunner
@pytest.mark.asyncio
async def test_wf_with_example(data_dir):
# Example usage:
index_path = data_dir.joinpath("daily_bio_bert_indexed")
# Ensure the path is correct and the directory exists
assert index_path.exists(), f"Directory not found: {index_path}"
# Initialize the indexer and load the index
# indexer = KDBAIDailyMedIndexer()
indexer = LocalIndexer(persist_dir=index_path)
indexer.load_index()
top_k = 3 # Adjust the number of documents to retrieve
Settings.llm = OpenAI(model="gpt-4o-mini")
# Pass the indexer to the workflow
rag = WorkflowRAG(indexer=indexer, timeout=60, top_k=top_k)
sm = LocalSemanticCache(
model_name="sentence-transformers/all-mpnet-base-v2", dimension=768, json_file="test_llama_index_wf.json"
)
query = "What information do you have about Clopidogrel?"
qa = QuestionAnswerRunner(sm=sm, rag=rag)
response_1 = qa.ask(query, enable_stream=True)
result_1 = ""
async for chunk in response_1:
result_1 += chunk
response_2 = qa.ask(query, enable_stream=True)
result_2 = ""
async for chunk in response_2:
result_2 += chunk
assert result_1 == result_2
sm.clear()