SYMBOL INDEX (16 symbols across 2 files) FILE: api.py function download_pdf (line 20) | def download_pdf(url, output_path): function preprocess (line 24) | def preprocess(text): function pdf_to_text (line 30) | def pdf_to_text(path, start_page=1, end_page=None): function text_to_chunks (line 48) | def text_to_chunks(texts, word_length=150, start_page=1): class SemanticSearch (line 68) | class SemanticSearch: method __init__ (line 69) | def __init__(self): method fit (line 73) | def fit(self, data, batch=1000, n_neighbors=5): method __call__ (line 81) | def __call__(self, text, return_data=True): method get_text_embedding (line 90) | def get_text_embedding(self, texts, batch=1000): function load_recommender (line 100) | def load_recommender(path, start_page=1): function generate_text (line 111) | def generate_text(openAI_key, prompt, engine="text-davinci-003"): function generate_answer (line 130) | def generate_answer(question, openAI_key): function load_openai_key (line 153) | def load_openai_key() -> str: function ask_url (line 163) | def ask_url(url: str, question: str): function ask_file (line 171) | async def ask_file(file: UploadFile, question: str) -> str: FILE: app.py function ask_api (line 8) | def ask_api(