swift-nail-77471
09/16/2025, 3:42 PMtall-airline-16756
09/16/2025, 3:42 PMtall-airline-16756
09/16/2025, 3:43 PMimport * as pdfjs from 'pdfjs-dist';
import { TextItem } from 'pdfjs-dist/types/src/display/api';
async function convertPDFToText(file: File): Promise<string> {
const buffer = await file.arrayBuffer();
const pdf = await pdfjs.getDocument({ data: buffer }).promise;
const numPages = pdf.numPages;
const textContent: string[] = [];
for (let i = 1; i <= numPages; i++) {
const page = await pdf.getPage(i);
const text = await page.getTextContent();
const pageText = text.items.map(item => (item as TextItem).str).join(' ');
textContent.push(pageText);
}
return textContent.join('\n');
}
2. Build RAG Database from Text Files:
import asyncio
from rag_db_builder import RAGBuilder
async def main():
await RAGBuilder.create_from_file(
file_path="knowledge_base.txt",
index_path="data",
data_path="paragraphs.pkl",
embeddings_dimension=1536,
embeddings_model="text-embedding-3-small"
)
if __name__ == "__main__":
asyncio.run(main())
3. RAG-Enabled Agent Using LlamaIndex:
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
async def query_info(query: str) -> str:
query_engine = index.as_query_engine(use_async=True)
response = await query_engine.aquery(query)
return str(response)
If you have any questions or need more details on file ingestion or troubleshooting, please don’t hesitate to reach out. I’m here to support you every step of the way!
Sources: livekit/livekit_composite | DeepWiki | examples/retrieval/retrieval.cpp | rag/rag_db_builder.py | examples/voice_agents/llamaindex-rag/retrieval.py