{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2024-04-09T12:19:57.209797Z", "start_time": "2024-04-09T12:19:56.512881Z" } }, "outputs": [], "source": [ "import openai\n", "import os\n", "from langchain.embeddings.openai import OpenAIEmbeddings\n", "from langchain.vectorstores import Chroma\n", "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", "from langchain.llms import OpenAI\n", "from langchain.chains import RetrievalQA\n", "from langchain.document_loaders import PyPDFLoader" ] }, { "cell_type": "code", "outputs": [], "source": [ "from langchain_community.embeddings import HuggingFaceEmbeddings" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-04-09T12:20:42.829268Z", "start_time": "2024-04-09T12:20:42.826653Z" } }, "id": "250fa66f6697db37", "execution_count": 3 }, { "cell_type": "code", "outputs": [], "source": [ "embeddings = HuggingFaceEmbeddings()" ], "metadata": { "collapsed": false }, "id": "60529ce6ea0b7805", "execution_count": null }, { "cell_type": "code", "outputs": [], "source": [ "loader = PyPDFLoader(\"../data/book.pdf\")\n", "documents = loader.load()\n", "splitter = RecursiveCharacterTextSplitter(\n", " chunk_size=1000,\n", " chunk_overlap=100)\n", "texts = splitter.split_documents(\n", " documents\n", ")\n", "vectordb = Chroma.from_documents(\n", " documents=texts,\n", " embedding=embeddings,\n", " persist_directory=\"db\"\n", ")\n", "vectordb.persist()" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-04-09T12:29:33.274721Z", "start_time": "2024-04-09T12:28:17.211426Z" } }, "id": "8877d4cddc9e6685", "execution_count": 18 }, { "cell_type": "code", "outputs": [ { "data": { "text/plain": "True" }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dotenv import load_dotenv\n", "load_dotenv()" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-04-09T12:31:43.284648Z", "start_time": "2024-04-09T12:31:43.268116Z" } }, "id": "19215a11120d224a", "execution_count": 20 }, { "cell_type": "code", "outputs": [], "source": [ "from langchain_openai import ChatOpenAI\n", "qa = RetrievalQA.from_chain_type(\n", " llm=ChatOpenAI( model_name=\"gpt-3.5-turbo\", temperature=0), \n", " chain_type=\"stuff\", \n", " retriever=vectordb.as_retriever(),\n", " return_source_documents=True,\n", ")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-04-09T12:33:07.391322Z", "start_time": "2024-04-09T12:33:07.000452Z" } }, "id": "8e83a7e1daba629e", "execution_count": 24 }, { "cell_type": "code", "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/sviatoslavbidzilia/anaconda3/envs/pdf-rag/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", " warn_deprecated(\n", "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", "To disable this warning, you can either:\n", "\t- Avoid using `tokenizers` before the fork if possible\n", "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Ця типологія поділяється за Максом Вебером.\n", "[Document(page_content='традиціями, системою розділення праці, характером комунікацій тощо. Цей підхід дає змогу зіставляти', metadata={'page': 266, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='харизматичні й раціональні системи.', metadata={'page': 201, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='перші два типи притаманні стабільним соціальним спільнотам, то харизматична', metadata={'page': 331, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='до того, що одні й ті ж самі терміни прихильниками різних політичних поглядів сприймаються', metadata={'page': 503, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'})]\n", "-------------------\n", "Стабілізуючі фактори функціонування політичної системи можуть включати в себе наявність демократичних інститутів, правову державу, ефективну систему регулювання конфліктів, належне функціонування економіки, соціальну стабільність, а також підтримку громадськості та довіру до політичних інститутів.\n", "[Document(page_content='функції якого суто політичні.', metadata={'page': 232, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='Функції політичної символіки.', metadata={'page': 510, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='функціонування. \\nЯкщо розглядати процес формування ідеології як теорії в історичній', metadata={'page': 347, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='який фактично допомагає функціонуванню існуючої політичної влади. Серед форм реалізації методу', metadata={'page': 383, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'})]\n", "-------------------\n", "Вибачте, я не можу відповісти на ваше питання, оскільки воно вимагає конкретних знань про конституційні засади сучасної політичної системи України, яких у мене немає.\n", "[Document(page_content='те, що символіка взагалі й політична зокрема за своєю природою є конвенціональними, тобто їхній', metadata={'page': 511, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='зовнішньої загрози існуючим політичним кордонам України та територіальній цілісності держави,', metadata={'page': 399, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content='система знань про політичну дійсність і якою завершується, констатуючи цим свої засади, єдинолюдина', metadata={'page': 19, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'}), Document(page_content=\"Звідси - здатність уловити зазначені очікування з боку суб'єкта політичної\", metadata={'page': 449, 'source': '/Users/sviatoslavbidzilia/PycharmProjects/pdf-rag/data/book.pdf'})]\n", "-------------------\n" ] } ], "source": [ "queries = [\"Чия типологія поділяється на традиційні, харизматичні й раціональні системи?\", \n", " \"Які існують стабілізуючі фактори функціонування політичної системи?\",\n", " \"Які конституційні засади сучасної політичної системи України ви знаєте?\"]\n", "for query in queries:\n", " result = qa({\"query\": query})\n", " print(result[\"result\"])\n", " print(result[\"source_documents\"])\n", " print(\"-------------------\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-04-09T12:33:32.604164Z", "start_time": "2024-04-09T12:33:23.678319Z" } }, "id": "773ee487cedba406", "execution_count": 25 }, { "cell_type": "code", "outputs": [], "source": [], "metadata": { "collapsed": false }, "id": "b34d3baaac8bc62a" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }