Unlocking Insights: Semantic Search in Jupyter Notebooks