(1) [Основы разработки приложений с использованием больших моделей] Интеграция среды разработки Anaconda + PyCharm https://www.bilibili.com/video/BV1q9HxeEEtT/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/myVgyitFzrA
(2) [Практический процесс] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код, один код для интеграции нескольких типов больших моделей https://www.bilibili.com/video/BV1ryHxesEHs/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/xAEi5CWEIl0
(3) [Анализ исходного кода] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код, один код для интеграции нескольких типов больших моделей https://www.bilibili.com/video/BV1JUHxeQEc7/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/ptrCo8b-wM0
(4) [Улучшенный поиск с использованием Re-ranker] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код https://www.bilibili.com/video/BV19tsteREYx/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/M_e-XT3x5OA
(5) [Улучшенное предварительное обработки PDF-таблиц] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код https://www.bilibili.com/video/BV1c7sueSEZe/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/Nhal2EswD9o(6) [Улучшенная загрузка истории диалогов (1)] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код https://www.bilibili.com/video/BV1GdnfeAEEe/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/wWx986JVXpI(7) [Улучшенная загрузка истории диалогов (2) - интеграция в исходный проект] RAG + LangChain + FastAPI + OpenAI + Qwen создание частной базы знаний, полный процесс создания и поиска, разделяем исходный код https://www.bilibili.com/video/BV1bQHPegE3o/?vd_source=30acb5331e4f5739ebbad50f7cc6b949https://youtu.be/PPpfONOj5jI# 1. Основные концепции
RAG: Retrieval Augmented Generation (Инкрементное генерирование с использованием поиска): метод, который улучшает способности генерирующей модели с помощью поиска. Основная идея: человек ищет знания, изучает информацию; LLM ищет знания, используя поиск векторных баз данных. Основные цели: устранение врожденных ограничений LLM, знания LLM не являются актуальными, LLM может не знать специфических знаний в частном секторе. Аналогия сценария: процесс RAG можно представить как экзамен с открытыми книгами. LLM сначала просматривает информацию, а затем отвечает на вопросы.
Оффлайн этапы: загрузка документов -> разделение документов -> векторизация -> загрузка векторов в базу данных. Онлайн этапы: получение вопроса пользователя -> векторизация вопроса пользователя -> поиск в базе данных векторов -> заполнение результата поиска и вопроса пользователя в шаблон prompt -> вызов LLM с помощью окончательного prompt -> генерация ответа LLM.
LangChain — это фреймворк для разработки приложений, управляемых большими языковыми моделями (LLM), официальный сайт: https://python.langchain.com/v0.2/docs/introduction/
LCEL (LangChain Expression Language), ранее называвшийся chain, это декларативный язык, который легко объединяет различные последовательности вызовов в цепочки.
Основные характеристики включают поддержку потоков, асинхронность, оптимизированное параллельное выполнение, повторные попытки и откаты, доступ к промежуточным результатам, режимы ввода и вывода, интеграцию без швов с LangSmith для отслеживания, интеграцию без швов с LangServe для развертывания.
LangSmith — это платформа для создания производственных приложений на основе LLM. С его помощью вы можете тщательно контролировать и оценивать свои приложения, официальный сайт: https://docs.smith.langchain.com/## 1. 3 Chroma Векторная база данных, специально разработанная для векторного поиска.
Anaconda: предоставляет Python-виртуальные среды, с официального сайта можно скачать установочный пакет для соответствующей операционной системы. PyCharm: предоставляет интегрированную среду разработки, с официального сайта можно скачать установочный пакет для коммьюнити-версии. Для установки можно воспользоваться следующим видео: [Основы применения больших моделей] Установка Anaconda + PyCharm https://www.bilibili.com/video/BV1q9HxeEEtT/?vd_source=30acb5331e4f5739ebbad50f7cc6b949
Официальное описание: это система управления и распространения API OpenAI Поддерживает Azure, Anthropic Claude, Google PaLM 2 & Gemini, ChatGLM, Baidu Wenxin Yiyan, Xunfei Xinghuo Cognitive, Alibaba Qianwen, 360 Zhitou, Tencent Huan Yuan
Используйте официально предоставляемый пакет для установки и развертывания, подробности см. в следующей ссылке для ручного развертывания: https://github.com/songquanpeng/one-api Скачайте исполняемый файл OneAPI one-api и загрузите его на сервер, затем выполните следующую команду для запуска в фоновом режиме:
nohup ./one-api --port 3000 --log-dir ./logs > output.log 2>&1 &
После успешного запуска, откройте следующий URL в браузере для доступа к странице one-api, по умолчанию имя пользователя и пароль: root 123456
http://IP:3000/
Создание токена: создание APIKey для OneAPI, который будет использоваться в последующем коде## 2.3 Схема использования OpenAI В Китае прямой доступ невозможен, можно использовать прокси-сервер, выберите конкретную схему прокси-сервера самостоятельно. Можно посмотреть это видео: 【GraphRAG версия 0.3.0 сравнение и практическое тестирование】используя gpt-4o-mini и qwen-plus для создания индекса текстовых знаний около 20 000 слов + локальное/глобальное поисковое сравнение https://www.bilibili.com/video/BV1maHxeYEB1/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 https://youtu.be/iXfsJrXCEwA
Просто запросите APIKey на странице настроек на сайте LangSmith (вы можете использовать его или нет). https://smith.langchain.com/o/93f0b841-d320-5df9-a9a0-25be027a4c09/settings
Скачайте файлы проекта с GitHub на локальную машину, ссылка на скачивание: https://github.com/NanGePlus/RagLangchainTest https://gitee.com/NanGePlus/RagLangchainTest
Используйте PyCharm для создания проекта и настройки виртуальной среды Python. Название проекта: RagLangchainTest.
Просто скопируйте файлы из загруженной папки в новый проект.
pip install -r requirements.txt
Для каждого пакета указано фиксированное версионное число, используемое в этом видео-тесте.# 4. Проектный тест
В качестве примера используются PDF-файлы. В папке input подготовлены два файла:
В папке tools предоставлены скрипты pdfSplitTest_Ch.py для обработки китайских документов и pdfSplitTest_En.py для обработки английских документов. Скрипт vectorSaveTest.py выполняет вызов инструментов из папки tools для предварительной обработки текста, вычисления векторов и загрузки в базу данных. Перед запуском скрипта с помощью команды python vectorSaveTest.py необходимо настроить следующие параметры в зависимости от ваших потребностей: Настройка 1: Выбор модели для использования: API_TYPE = "oneapi" # openai: вызов модели gpt; oneapi: вызов модели, поддерживаемой oneapi (например, Qwen) Настройка 2: Настройка параметров модели openai: OPENAI_API_BASE = "укажите URL для вызова API" OPENAI_EMBEDDING_API_KEY = "укажите API ключ для модели Embedding" OPENAI_EMBEDDING_MODEL = "text-embedding-3-small" Настройка 3: Настройка параметров модели oneapi (например, Qwen): ONEAPI_API_BASE = "укажите URL для вызова oneapi" ONEAPI_EMBEDDING_API_KEY = "укажите API ключ для модели Embedding" ONEAPI_EMBEDDING_MODEL = "text-embedding-v1" Настройка 4: Выбор языка текста: TEXT_LANGUAGE = 'Chinese' # Chinese или English Настройка 5: Укажите путь к PDF файлу: INPUT_PDF = "input/健康档案.pdf"Настройка 6: Укажите диапазон страниц для обработки, если все страницы, то None: PAGE_NUMBERS=None PAGE_NUMBERS=[2, 3] # Укажите номера страниц Настройка 7: Настройка параметров базы данных ChromaDB: CHROMADB_DIRECTORY = "chromaDB" # Путь к хранению базы данных ChromaDB CHROMADB_COLLECTION_NAME = "demo001" # Имя коллекции базы данных ChromaDB для поиска
Перед запуском скрипта с помощью команды python main.py необходимо скорректировать следующие параметры в коде в соответствии с вашими условиями: Изменение 1: Установка переменных окружения langsmith:
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "здесь введите полученный API_KEY"
Изменение 2: Установка параметров для доступа к векторному базе данных ChromaDB:
CHROMADB_DIRECTORY = "chromaDB" # Путь к постоянному хранению базы данных ChromaDB
CHROMADB_COLLECTION_NAME = "demo001" # Имя коллекции ChromaDB для поиска
Изменение 3: Установка параметров шаблонов запросов:
PROMPT_TEMPLATE_TXT = "prompt_template.txt" # Путь к файлу шаблона
Изменение 4: Установка флагов для выбора модели:
API_TYPE = "oneapi" # openai: вызов модели gpt; oneapi: вызов модели, поддерживаемой oneapi (например, Qwen)
Изменение 5: Настройка параметров для модели openai в соответствии с вашими условиями:
OPENAI_API_BASE = "здесь введите URL для вызова API"
OPENAI_CHAT_API_KEY = "здесь введите API_KEY для модели LLM"
OPENAI_CHAT_MODEL = "gpt-4o-mini"
OPENAI_EMBEDDING_API_KEY = "здесь введите API_KEY для модели Embedding"
``````markdown
OPENAI_EMBEDDING_MODEL = "text-embedding-3-small"
Изменение 6: Настройка параметров для модели oneapi (например, Qwen) в соответствии с вашими условиями:
ONEAPI_API_BASE = "здесь введите URL для вызова API"
ONEAPI_CHAT_API_KEY = "здесь введите API_KEY для модели LLM"
ONEAPI_CHAT_MODEL = "qwen-plus"
ONEAPI_EMBEDDING_API_KEY = "здесь введите API_KEY для модели Embedding"
ONEAPI_EMBEDDING_MODEL = "text-embedding-v1"
Изменение 7: Настройка параметров для API-сервиса в соответствии с вашими условиями:
PORT = 8012 # Порт для доступа к сервису
Внимание: При тестировании вызова API oneapi могут возникнуть ошибки вида:
openai.BadRequestError: Error code: bk_0001 - {'error': {'message': 'input should not be none. : payload. input. contents (request id: 2024082015351785023974771558878)', 'type': 'upstream_error', 'param': '400', 'code': 'bad_response_status_code'}}
После анализа выяснилось, что проблема связана с пакетом langchain_openai/embeddings, в частности с файлом base. В исходном коде файла /opt/anaconda3/envs/RagLangchainTest/lib/python3.11/site-packages/langchain_openai/embeddings/base.py
по умолчанию переменная check_embedding_ctx_length
имеет значение True
. Необходимо изменить её значение на False
.
check_embedding_ctx_length: bool = False
```### 2. Запуск скрипта apiTest для тестирования поиска
Перед запуском команды `python apiTest.py` для запуска скрипта необходимо скорректировать следующие параметры в коде в соответствии с вашими условиями. После успешного запуска можно будет проверить отслеживание Smith.
**Изменение 1: значение флага для непотокового вывода True или False**
```python
stream_flag = False
```
**Изменение 2: проверьте, совпадают ли IP и PORT в URL с теми, что указаны в основном скрипте**
```python
url = "http://localhost:8012/v1/chat/completions"
```
## 4.4 Тестирование поиска текста (продвинутое 1 re-ranker)
Re-ranker — это технология, используемая в системах поиска информации, которая направлена на дальнейшую сортировку первоначально найденных результатов для повышения релевантности и точности.
Во время информационного поиска система сначала выбирает из большого количества документов или данных набор кандидатов на основе запроса.
Затем модель re-ranker анализирует и сортирует эти кандидаты для обеспечения того, чтобы наиболее релевантные результаты были в верхней части списка.### (1) Запуск скрипта mainReranker после изменения конфигурации
Сначала скачайте папку с моделью по этому адресу, после завершения загрузки скопируйте папку model в папку other проекта.
Ссылка: https://pan.baidu.com/s/12oUh-vOVgSqH1fcmhy33wA?pwd=1234 Код: 1234
Получите последнюю версию кода проекта или скачайте отдельно скрипт mainReranker.py и поместите его в проект.
Перед запуском скрипта командой python mainReranker.py необходимо скорректировать следующие параметры в соответствии с вашими условиями:
**Изменение 1: установка зависимостей:**
```pip install sentence-transformers==3.0.1```
**Изменение 2: настройка модели re-ranker в соответствии с вашими условиями:**
```RERANK_MODEL = 'other/models/bge-reranker-large'```
**Изменение 3: другие изменения параметров, см. конфигурацию в разделе 4.3**### (2) Запуск скрипта apiTest для тестирования поиска
```python
python apiTest.py
```
После успешного запуска можно будет проверить отслеживание smith.
Изменения параметров, см. конфигурацию в разделе 4.3.
## 4.5 Тестирование текстового поиска (продвинутое 2: решения для обработки PDF-таблиц)
Сначала загрузите необходимые файлы модели и тестовый PDF-файл по данной ссылке.
После завершения загрузки скопируйте папку с моделью в папку other/models проекта, а два PDF-файла — в папку input.
Ссылка: https://pan.baidu.com/s/1QjBa51iWbj2BgPJXSU5--A?pwd=1234 Код: 1234
### (1) Первый подход к решению
Процесс: PDF-файл преобразуется в изображение -> изображение анализируется для выделения таблиц -> выделенные таблицы сохраняются в виде изображений -> вызов визуального LLM для создания краткого описания
Тестирование: запустите pdfTableSplitTest01.py в папке tools, используя тестовое изображение из папки input — "Здоровье (с таблицей 01).pdf".### (2) Второй подход к решению
Процесс: извлечение текста из PDF -> обнаружение и извлечение таблиц из PDF -> использование крупной модели для преобразования таблиц в естественный язык -> объединение текста и описания таблиц
Тестирование: запустите скрипт `pdfTableSplitTest02.py` в папке `tools`, используя тестовое изображение из папки `input` — "Здоровье (с таблицей 02).pdf".## 4.6 Тестирование текстового поиска (продвинутое 3 с добавлением исторических диалогов)
### (1) Сначала выполните небольшой тест для проверки
Используйте методы, предоставляемые в рамках фреймворка LangChain, для выполнения теста
Запустите скрипт `memoryTest.py` в папке `test`
### (2) Интеграция в проект
Процесс: запустите скрипт `vectorSaveTest.py` для заполнения базы данных -> запустите скрипт `mainMemry.py` для запуска службы -> запустите скрипт `apiMemoryTest.py` для тестирования
**Внимание 1:** Скрипты `mainMemry.py` и `apiMemoryTest.py` были улучшены на основе исходных версий
**Внимание 2:** В скрипте `mainMemry.py` используется шаблонный файл `prompt_template_memory.txt`
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )