Полное руководство по началу работы с LangChain
Вы видели, как в последнее время вокруг ИИ всё чаще появляются эмодзи попугая + цепочки? Это фирменные эмодзи LangChain. LangChain — это инструмент AI Agent, который добавляет функциональность к большим языковым моделям (LLMs), таким как GPT. Кроме того, он включает такие функции, как управление токенами, управление контекстом и шаблоны промптов. В этом вводном руководстве мы рассмотрим два основных примера LangChain с реальными вариантами использования. Во-первых, как выполнять запросы к GPT. Во-вторых, как выполнять запросы к документу с помощью Colab notebook доступен здесь. Это руководство по LangChain проведет вас через процесс выполнения запросов к GPT и документам с использованием LangChain.
В этом руководстве мы рассмотрим:
- Что такое LangChain?
- Как запускать запросы LangChain?
- Запрос к GPT
- Запрос к документу
- Краткое введение в LangChain
Что такое LangChain?
LangChain — это фреймворк для создания приложений, использующих большие языковые модели. Он позволяет быстро создавать решения с помощью CVP Framework. Две ключевые функциональности LangChain для использования больших языковых моделей: 1) осведомленность о данных и 2) агентность. Осведомленность о данных — это способность включать внешние источники данных в приложение на базе LLM. Агентность — это способность использовать другие инструменты.
Как и во многих инструментах LLM, LLM по умолчанию в LangChain — это GPT от OpenAI, и вам нужен API key from OpenAI, чтобы его использовать. Кроме того, LangChain предлагает LangChain Expression Language (LCEL) для составления сложных цепочек обработки языка, упрощая переход от прототипирования к продакшену. Кроме того, LangChain работает как с Python, так и с JavaScript. В этом руководстве вы узнаете, как это работает, на примерах Python. Вы можете установить библиотеку Python через pip, выполнив pip install langchain.
Как работает LangChain?
Поток ответов на вопросы в LangChain состоит из строительных блоков, которые можно легко заменять, чтобы создать пользовательский шаблон в соответствии с индивидуальными потребностями. Эти блоки включают вопрос, эмбеддинг, документы, используемые для обучения модели, сформированный промпт и ответ. LangChain также использует парсеры вывода для управления и уточнения ответов, генерируемых языковыми моделями, обеспечивая структурированные и релевантные результаты. Поэтому, если компании нужен чат, обученный на конкретных документах, LangChain может заменять различные компоненты, чтобы достичь этой цели.
Как использовать LangChain с GPT и векторной базой данных Milvus?
Один из основных вариантов использования LangChain — выполнять запросы к текстовым данным. Вы можете использовать его для запросов к документам, векторным хранилищам или для упрощения взаимодействия с GPT, во многом как LlamaIndex. В этом руководстве мы рассмотрим простой пример того, как взаимодействовать с GPT с помощью LangChain и выполнять запрос к документу по семантическому смыслу с использованием LangChain with a vector store. Этот процесс, известный как Retrieval Augmented Generation (RAG), расширяет возможности языковых моделей за счет включения внешних данных в процессе генерации.
Запрос к GPT
Большинство людей знакомы с GPT благодаря общению с ChatGPT. ChatGPT — это флагманский интерфейс OpenAI для взаимодействия с GPT. Однако, если вы хотите взаимодействовать с GPT программно, вам нужен интерфейс запросов, такой как LangChain. LangChain предоставляет ряд интерфейсов запросов для GPT — от простых промптов с одним вопросом до few shot learning через контекст.
В этом примере мы рассмотрим, как использовать LangChain для объединения вопросов в цепочку с помощью шаблона промпта. Сначала нужно установить несколько библиотек Python. Мы можем установить их с помощью # pip install langchain openai python-dotenv tiktoken. Я использую python-dotenv, потому что управляю своими переменными окружения в файле .env, но вы можете использовать любой удобный вам способ загрузки ключа OpenAI API.
Когда наш ключ OpenAI API готов, мы должны загрузить наши инструменты LangChain. Нам нужны импорты PromptTemplate и LLMChain из langchain и импорт OpenAI из langchain.llms. В этом примере мы используем текстовую модель OpenAI, text-davinci-003. Затем мы создаем шаблон для запроса к GPT. Шаблон, который мы создаем ниже, сообщает GPT, что нужно отвечать на заданные вопросы по одному. Сначала мы создаем строку, представляющую входные переменные в скобках, аналогично тому, как работают f-strings.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
Далее мы используем объект PromptTemplate, чтобы создать шаблон из строки с указанными входными переменными. Когда наш шаблон промпта готов, мы можем создать “цепочку” LLM, передав промпт и выбранные крупные языковые модели. Теперь пора создать вопросы. Как только у нас есть вопросы, которые мы хотим задать, мы run цепочку LLM с переданными вопросами, чтобы получить наши ответы.
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?\n" +
"If I am 6 ft 4 inches, how tall am I in centimeters?\n" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
Изображение ниже показывает ожидаемые результаты для наших примерных вопросов.
Результаты примерных вопросов.
Запрос релевантных документов
Одна из областей для улучшения GPT и крупных языковых моделей в целом заключается в том, что они обучаются только на данных, доступных на момент их обучения. Это означает, что со временем они теряют контекст и точность. Подобно фреймворку CVP, LangChain предоставляет способ устранить эту проблему с помощью векторных баз данных. Доступно множество векторных баз данных; в этом примере мы используем Milvus, потому что хорошо с ним знакомы.
LangChain отлично справляется с обработкой документных данных, преобразуя отсканированные документы в пригодные к использованию данные с помощью автоматизации рабочих процессов.
Чтобы продемонстрировать способность LangChain внедрять актуальные знания в ваше LLM-приложение и возможность выполнять семантический поиск, мы рассмотрим, как запросить документ. В этом примере мы используем стенограмму обращения «О положении страны». Вы можете скачать стенограмму и найти Colab-ноутбук здесь. Чтобы получить библиотеки, необходимые для этой части руководства, выполните pip install langchain openai milvus [pymilvus](https://zilliz.com/blog/get-started-with-pymilvus) python-dotenv tiktoken.
Возможность динамически получать релевантные документы на основе пользовательских запросов значительно повышает точность сгенерированных ответов.
Как и в примере с объединением вопросов в цепочку, мы начинаем с загрузки нашего ключа OpenAI API и использования больших языковых моделей. Затем мы запускаем векторную базу данных с помощью Milvus Lite, что позволяет нам запускать Milvus непосредственно в нашем notebook.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()
Теперь мы готовы перейти к деталям запросов к документу. На этот раз из LangChain импортируется много компонентов. Нам нужны Open AI Embeddings, character text splitter, интеграция с Milvus, text loader и цепочка retrieval Q/A.
Первое, что мы делаем, — настраиваем загрузчик и загружаем текстовый файл. В этом случае он хранится у меня в той же папке, что и этот notebook, под именем state_of_the_union.txt. Затем мы разбиваем текст и сохраняем его как набор документов LangChain. После этого мы можем настроить нашу векторную базу данных. В этом случае мы создаем коллекцию Milvus из документов, которые только что загрузили через TextLoader и CharacterTextSplitter. Мы также передаем эмбеддинги OpenAI в качестве набора векторных эмбеддингов текста.
Когда наша векторная база данных загружена, мы можем использовать объект RetrievalQA для запросов к документам через векторную базу данных. Мы используем тип цепочки stuff " и передаем OpenAI в качестве нашей LLM, а векторную базу данных Milvus — в качестве retriever. Затем мы можем создать запрос, например “What did the president say about Ketanji Brown Jackson?”, иrun` этот запрос. Наконец, нам следует остановить нашу векторную базу данных для корректного завершения.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
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)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={"host": "127.0.0.1", "port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What did the president say about Ketanji Brown Jackson?"
qa.run(query)
default_server.stop()
На изображении ниже показано, как может выглядеть ожидаемый ответ. Мы должны получить ответ вроде “The president said that Ketanji Brown Jackson is one of the nation's top legal minds, a former top litigator in private practice, a former federal public defender, …”
Результаты запроса
Альтернатива LangChain
Существует несколько чат-инструментов, которые можно рассматривать как альтернативы LangChain, и люди часто спорят о том, какие из них лучшие. Многие из этих альтернатив также используют специализированные чат-модели, предназначенные для интерактивных чат-приложений. Среди часто упоминаемых:
- AgentGPT
- TensorFlow
- Auto-GPT
- BabyAGI
- Semantic UI
- LlamaIndex
Краткое содержание руководства по LangChain
В этой статье мы рассмотрели основы использования LangChain. Мы узнали, что LangChain — это фреймворк для создания LLM-приложений, который опирается на два ключевых фактора. Первый фактор — использование внешних данных, таких как текстовый документ. Способность LangChain интегрировать внешние данные повышает эффективность языковых моделей за счет включения информации, специфичной для пользователя. Второй фактор — использование других инструментов, таких как векторная база данных.
Мы рассмотрели два примера. Сначала мы изучили один из классических примеров LangChain — как объединять несколько вопросов в цепочку. LangChain безупречно работает с различными поставщиками моделей, включая OpenAI и Hugging Face, чтобы расширить свою функциональность. Затем мы рассмотрели практический способ использования LangChain для внедрения предметных знаний, объединив его с векторной базой данных, такой как Milvus, для запроса документов.
Парсеры вывода играют ключевую роль в уточнении ответов языковой модели, обеспечивая структурированные и релевантные результаты.
Читать далее

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.



