Повышение интеллектуальности и эффективности ChatGPT: сила LangChain и Milvus
Этот пост был первоначально опубликован в TheSequence и перепечатан здесь с разрешения.
Хотя ChatGPT приобрел значительную популярность, и многие люди используют его API для разработки своих чат-ботов или изучения Langchain, он не лишен своих трудностей.
ChatGPT часто может создавать иллюзию интеллекта. Пользователи могут взаимодействовать с чат-ботом, который использует сложный жаргон, лишь затем осознавая, что бот генерирует бессмысленные ответы или фабрикует несуществующие 404-ссылки.
Хранение контекста — еще одно препятствие. ChatGPT сохраняет записи только из текущей сессии, а это означает, что бот, обученный всего несколько дней назад, может вести себя так, будто не помнит эту сессию. Эта «амнезия» подчеркивает необходимость в чат-боте, который может сохранять и извлекать данные.
Стоимость и производительность являются важными факторами при использовании ChatGPT или даже более небольших open-source моделей для инференса. Во многих случаях это может быть дорогостоящим, требуя нескольких A100 и значительного времени. Разработки должны устранить узкие места производительности, прежде чем внедрять большие языковые модели (LLM) в приложения реального времени.
Повышение интеллекта ChatGPT — это та область, где вступает в игру сочетание LangChain и Milvus. Благодаря интеграции LangChain и Milvus, LLM могут использовать мощь векторных хранилищ для повышения интеллекта и эффективности. Как все это работает? Давайте погрузимся в возможности LangChain и Milvus в приложениях LLM, а затем рассмотрим, как создать и улучшить собственное приложение AI Generated Content (AIGC).
LangChain для приложения на базе LLM
LangChain — это фреймворк для разработки приложений на базе языковых моделей. Фреймворк LangChain построен вокруг следующих принципов:
- Осведомленность о данных: подключать языковую модель к другим источникам данных
- Агентность: позволять языковой модели взаимодействовать со своей средой
Надежный фреймворк LangChain состоит из ряда модулей, таких как Models, Prompts, Memory, Indexes, Chains, Agents и Callbacks, которые являются ключевыми абстракциями, которые можно рассматривать как строительные блоки любого приложения на базе LLM. Для каждого модуля LangChain предоставляет стандартные, расширяемые интерфейсы. LanghChain также предоставляет внешние интеграции и даже сквозные реализации для использования «из коробки».
LLM wrapper находится в центре функциональности LangChain, предлагая множество провайдеров LLM, таких как OpenAI, Cohere, Hugging Face и т. д. Он предоставляет стандартный интерфейс ко всем LLM и включает общие инструменты для работы с ними.
Векторная база данных для LLM
LangChain предлагает впечатляющий спектр больших языковых моделей (LLM) для удовлетворения разнообразных потребностей. Но это еще не все. LangChain выходит за рамки основ, интегрируя различные векторные базы данных, такие как Milvus, Faiss и другие, чтобы обеспечить функциональность семантического поиска. Через свой VectorStore Wrapper LangChain стандартизирует необходимые интерфейсы для упрощения загрузки и извлечения данных. Например, используя класс Milvus, LangChain позволяет хранить векторы признаков, представляющие документы, с помощью метода from_text. Затем метод similarity_search извлекает векторы запроса, чтобы найти документы, наиболее близко соответствующие запросу в пространстве эмбеддингов, тем самым облегчая семантический поиск.
Углубляясь в тему, мы понимаем, что векторные базы данных играют значительную роль в приложениях LLM, что очевидно на примере chatgpt-retrieval-plugin. Но на этом их полезность не заканчивается. У векторных баз данных есть множество других вариантов использования, что делает их незаменимым компонентом приложений LLM:
- Векторные базы данных обеспечивают хранение на основе контекста — полезную функцию в LLM-платформах, таких как Auto-GPT и BabyAGI. Эта возможность улучшает контекстное понимание и сохранение воспоминаний.
- Векторные базы данных предоставляют семантическое кэширование для LLM-платформ, таких как GPTCache, что оптимизирует производительность и позволяет снизить затраты.
- Векторные базы данных обеспечивают возможности работы со знаниями из документов, например OSSChat, что устраняет галлюцинации.
- И многое другое.
Если вы хотите узнать больше о Milvus и Auto-GPT, вы можете прочитать эту статью о том, как Milvus обеспечивает работу Auto-GPT. В следующем разделе вы узнаете, как LangChain и Milvus могут устранять галлюцинации.
Почему LangChain + Milvus могут устранять галлюцинации
В искусственном интеллекте есть выражение, что система часто будет генерировать «галлюцинации», что означает выдумывание фактов, не связанных с реальностью. Некоторые даже описывают ChatGPT как «уверенного парня, который может писать очень убедительную чепуху», и проблема галлюцинаций подрывает доверие к ChatGPT.
Векторные базы данных, показанные на следующей диаграмме, решают проблему галлюцинаций. Сначала сохраните официальные документы в виде текстовых векторов в Milvus и выполняйте поиск соответствующих документов в ответ на вопрос (оранжевая линия на диаграмме). Chatgpt отвечает на вопрос на основе правильного контекста, что приводит к ожидаемому ответу (зеленая линия на диаграмме).
Диаграмма, показывающая Langchain, Milvus и ChatGPT
Пример выше показывает, что объединить Milvus и ChatGPT очень просто. Нет необходимости размечать данные, обучать или разрабатывать модель либо выполнять ее тонкую настройку — вам нужно преобразовать текстовые данные в векторные данные и вставить их в Milvus. Комбинация Langchain-Milvus-ChatGPT создает хранилище текста, а итоговый ответ формируется на основе обращения к содержимому библиотеки документов.
Это гарантирует, что чат-бот получает корректные знания, эффективно снижая вероятность ошибок. Например, как администратор сообщества, когда мне нужно отвечать на вопросы, связанные с сообществом, я могу сохранить все документы из официальной документации Milvus.
Когда пользователь спрашивает: «Как использовать Milvus для создания чат-бота», чат-бот ответит на вопрос на основе официальной документации, сообщив пользователю, что она предоставляет примеры создания приложений и извлечения релевантных документов. Такой тип ответа надежен. Короче говоря, нам не нужно заново обучать или обрабатывать всё; нам нужно передать ChatGPT необходимые контекстные знания. Когда мы отправляем запрос, робот может предоставить контекст, связанный с официальным содержанием.
Вы испытываете воодушевление, узнав о возможностях Milvus и Langchain для ChatGPT? Если да, приготовьтесь заняться разработкой своего приложения. Давайте объединим усилия и создадим улучшенного чат-бота, используя невероятные возможности совместного применения LangChain и Milvus!
Создайте собственное приложение с LangChain и Milvus
0. Предварительные требования
Сначала установите LangChain с помощью команды pip install langchain. Что касается Milvus, у вас есть два варианта. Либо установите и запустите open-source Milvus в своей локальной системе, либо выберите облачный вариант, чтобы попробовать Zilliz — cloud-native сервис для Milvus, предлагающий бесплатную пробную версию. Zilliz — простой, доступный и надежный сервис, поэтому мы рассмотрим, как использовать Zilliz Cloud для приложения, а LangChain упрощает его использование.
1. Загрузите данные для базы знаний
Сначала нам нужно загрузить данные в стандартном формате. Помимо загрузки текста, нам нужно разбить его на небольшие фрагменты. Это необходимо, чтобы гарантировать, что мы передаем языковой модели только самые небольшие и наиболее релевантные фрагменты текста.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
Далее, теперь, когда у нас есть небольшие фрагменты текста, нам нужно создать эмбеддинги для каждого фрагмента текста и сохранить их в векторном хранилище. Создание эмбеддингов выполняется для того, чтобы мы могли использовать эмбеддинги для поиска только наиболее релевантных фрагментов текста, которые нужно отправить языковой модели. Это делается с помощью следующих строк. Здесь мы используем эмбеддинги OpenAI и Zilliz Cloud.
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={
"uri": "YOUR_ZILLIZ_CLOUD_URI",
"user": "YOUR_ZILLIZ_CLOUD_USERNAME",
"password": "YOUR_ZILLIZ_CLOUD_PASSWORD",
"secure": True
}
)
2. Запрос данных
Итак, теперь, когда мы загрузили данные, мы можем использовать их в цепочке вопросов и ответов.
Ознакомьтесь с приведенным ниже фрагментом кода, который рассматривает часть 3, "Устранение галлюцинаций," этой статьи. Он поможет вам полностью понять концепцию.
Это включает поиск документов, связанных с нашим заданным запросом, в базе знаний. Чтобы выполнить это, используйте метод similarity_search, чтобы сгенерировать вектор признаков для запроса, а затем выполнить поиск векторов в Zilliz Cloud на предмет похожих совпадений вместе с их связанным содержимым документов.
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
Затем запустите load_qa_chain, чтобы получить окончательный ответ. Он предоставляет самый общий интерфейс для ответов на вопросы. Он загружает цепочку, которая может выполнять QA для входных документов и использует ВЕСЬ текст в документах.
В приведенном ниже коде OpenAI используется как LLM. При запуске QAChain получает input_documents и question в качестве входных данных. input_documents — это документ, связанный с query в базе данных. Затем LLM формирует ответ на основе содержимого этих документов и заданного вопроса.
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
Почему Milvus лучше подходит для приложения AIGC
Итак, если вы хотите сделать свои приложения Artificial Intelligence-Generated Content (AIGC) более надежными, необходимо иметь векторную базу данных, представляющую текст. Но почему стоит выбрать векторную базу данных Milvus?
- Семантический поиск: Milvus хранит извлеченные семантические векторы признаков, обеспечивая интеллектуальный и удобный семантический поиск, что затруднительно для традиционных баз данных. Векторные базы данных делают семантический поиск более интеллектуальным и удобным.
- Масштабируемость: Поддержка масштабирования в кластере и облаке позволяет легко хранить и извлекать миллиарды сущностей. Масштабируемость необходима для приложений, где скорость и эффективность имеют первостепенное значение.
- Гибридный поиск: Milvus поддерживает поиск по смешанным векторным и скалярным данным, что может удовлетворить различные сценарии и требования поиска.
- Богатые API: Milvus предоставляет многоязычные API, включая Python, Java, Go, Restful и другие; Milvus легко интегрировать и использовать в различных приложениях.
- Интеграция LLM: Интеграции с несколькими LLM, включая OpenAI Plugin, Langchain и LLamaIndex, позволяют пользователям еще больше персонализировать свои приложения.
- Несколько вариантов развертывания: Мы разработали Milvus для поддержки множества сценариев использования — от вашего локального ноутбука до облачных продуктов, таких как Milvus-lite, docker-контейнеры, распределенные развертывания и использование в облаке. Это делает Milvus легко адаптируемым к приложениям разных размеров, поддерживая всё — от небольших проектов до поиска данных корпоративного уровня.
Следующий шаг для вашего приложения
В сфере ИИ постоянно появляются новые достижения и прорывные технологии, способные вывести ваше приложение на новый уровень. Здесь мы рассмотрим два способа улучшить ваше приложение: внедрение GPTCache и настройку моделей эмбеддингов и промптов. Это может повысить производительность и качество поиска, выделить ваше приложение и обеспечить лучший пользовательский опыт.
Улучшите производительность вашего AIGC-приложения — GPTCache
Если вы хотите оптимизировать производительность и сэкономить расходы для своего AIGC-приложения, обратите внимание на GPTCache. Этот инновационный проект предназначен для создания семантического кэша для хранения ответов LLM.
Итак, как это помогает? Кэшируя ответы LLM, а векторная база данных может извлекать похожие вопросы, чтобы получить кэшированный ответ, ваше приложение может быстро и точно отвечать пользователям. С GPTCache доступ к кэшированным ответам становится проще простого — больше никаких избыточных генераций ответов, что в конечном итоге экономит время и вычислительные ресурсы. GPTCache идет еще дальше, улучшая общий пользовательский опыт. Предоставление более быстрых и точных ответов удовлетворит вашего пользователя, и ваше приложение станет более успешным.
Улучшите качество поиска — настройте свои модели эмбеддингов и промпты
Помимо использования GPTCache, тонкая настройка ваших моделей эмбеддингов и промптов может улучшить качество результатов поиска. Модели эмбеддингов являются важнейшим компонентом ИИ-приложений, поскольку они служат строительными блоками, которые преобразуют текст в числовые векторы, которые может обрабатывать глубокое обучение. Настраивая свои модели эмбеддингов, вы можете повысить точность и релевантность результатов семантического поиска. Это включает настройку моделей так, чтобы они отдавали приоритет определенным ключевым словам и фразам, а также изменение их механизмов взвешивания и оценки, чтобы лучше отражать потребности и предпочтения вашей целевой аудитории. С хорошо обученной моделью эмбеддингов ваше AIGC-приложение может точно интерпретировать и категоризировать пользовательский ввод, что приводит к более точным результатам поиска.
Помимо этого, промпты, используемые в приложениях, играют важную роль в повышении качества результатов поиска. Промпты — это фразы, которые ваш ИИ использует, чтобы запрашивать у пользователей ввод, например: «Чем я могу помочь вам сегодня?» или «Что у вас на уме?». Тестируя и изменяя эти промпты, вы можете повысить качество и релевантность результатов поиска. Например, если ваше приложение ориентировано на конкретную отрасль или демографическую группу, вы можете адаптировать промпты так, чтобы они отражали язык и терминологию, используемые этой группой. Это помогает направлять пользователей к более релевантным поисковым запросам, обеспечивая более удовлетворительный опыт за счет более точного соответствия их потребностям. Улучшая промпты для удовлетворения требований пользователей, вы можете помочь им добиться более успешных поисков, что приведет к более удовлетворенной пользовательской базе.
В итоге
В заключение, LangChain и Milvus — идеальное решение для разработчиков, создающих приложения на базе LLM с нуля. LangChain предлагает стандартный и удобный интерфейс для LLM, а Milvus обеспечивает выдающиеся возможности хранения и извлечения данных. LangChain и Milvus могут повысить интеллектуальность и эффективность ChatGPT, что помогает вам преодолевать препятствия, связанные с галлюцинациями. Более того, с помощью технологий GPTCache, настройки промптов и моделей мы можем улучшать наши ИИ-приложения способами, которые раньше казались невозможными.
Продолжая расширять границы ИИ, давайте сотрудничать и создавать более светлое будущее для AIGC, чтобы исследовать безграничный потенциал искусственного интеллекта.
Читать далее

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

Why I’m Against Claude Code’s Grep-Only Retrieval? It Just Burns Too Many Tokens
Learn how vector-based code retrieval cuts Claude Code token consumption by 40%. Open-source solution with easy MCP integration. Try claude-context today.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.



