LangChain English: LCEL and RAG Pipeline Vocabulary (англійською)
Вивчайте англійську лексику, яку використовують у розробці LangChain — ланцюги LCEL, конвеєри RAG, пошукові засоби, пам’ ять і лексику агентів з поясненнями у професійному контексті.
Introduction
LangChain є найбільш широко використовуваним фреймворком для створення LLM-заснованих застосунків на Python. Він розробив свій власний словник, і багато з цього словника стало стандартом у більш широкому інженерному співтоваристві LLM. Якщо ви працюєте над системою командного створення RAG, агентами або конвеєрами LLM, ви зустрінете такі терміни, як LCEL, retrievers, chains і memory у повсякденних обговореннях. Зрозуміти, як інженери використовують ці терміни, допоможе вам безпечно робити внесок у перегляд коду, архітектурні документи і технічні обговорення.
LCEL: Мова виразів LangChain
LCEL (вимовляється як окремі літери: L-C-E-L) є декларативним способом компонування трубопроводів за допомогою оператора труби. Інженери описують це такими фразами:
- «Ми складаємо ланцюг за допомогою LCEL» — побудувати конвеєр, з’єднавши компоненти з оператором
| - «Ланці ліниві» — ланцюги LCEL не виконуються, поки ви не викликаєте
.invoke(),.stream(), або.batch() - «Ми направляємо пошуковик в команду, а потім в модель» — описуючи потік даних через конвеєр
- «LCEL дає нам потокове відтворення і асинхронну підтримку з коробки» — спільна заявлена перевага
Метафора труби тут дуже сильна. Інженери кажуть «ми трубимо», коли описують дані, що протікають від одного компонента до іншого. Типовий опис: «Ми передаємо запит через пошуковий засіб, поєднуємо отримані документи з запитом у шаблоні запитів, передаємо його в модель і передаємо вивід через рядковий аналізатор»
Слово ** runable ** є важливим у LCEL. Кожен компонент в ланцюзі LCEL реалізує інтерфейс Runnable, що означає, що його можна викликати, передавати потік і однорідно роздавати.
Підтримка RAID
RAG (Retrieval Augmented Generation) є одним з найпоширеніших випадків використання LangChain. Словниковий запас є обширним і важливим:
- ** retriever ** — компонент, який отримує відповідні документи за запитом; « ми використовуємо векторний запит, підтримуваний Chroma »
- ** векторний магазин ** — база даних, у якій зберігаються вбудовані документи для семантично пошукових цілей
- ** embed ** — перетворити текст на числовий вектор; « ми вбудовуємо документи перед їх індексуванням »
- chunk — сегмент більшого документа; « ми розділили PDF на шматки по 512 токенів з перекриванням по 50 токенів »
- ** перекриття ** — скільки спільного має кінець одного шматка і початок наступного шматка; зменшує втрати інформації на межах
- ** rerank ** — другий етап впорядкування отриманих документів за відповідністю; « ми змінили ранжування перших 20 результатів, щоб отримати найкращі 5 »
- ** context window stuffing ** — вставлення отриманих документів у контекст LLM; « нам потрібно обрізати шматки, щоб уникнути переповнення контекстного вікна »
Інженери кажуть: «Наш конвеєр RAG вставляє запит користувача, отримує 5 найсхожіших шматків з векторного магазину, вставляє їх в запит як контекст і запитує у моделі відповідь, засновану тільки на наданому контексті»
Пам’ять і держава
LangChain надає компоненти пам’ яті для зберігання історії розмов. Словник:
- ** пам’ ять розмов ** — зберігає минулі обміни, щоб надати контекст моделі з попередніх ходів
- «Ми обрізаємо пам’ять до останніх N обмінів» — уникайте перевищення контекстного вікна
- «Пам’ять вводиться в запит» — історія розмови форматується і додається до системного або людського повідомлення
- ** stateless ** — ланцюг без пам’ яті, що обробляє кожен виклик незалежно; « цей ланцюг питань і відповідей не має стану — відповідь на кожне питання надається незалежно »
Агентів і інструментів
Агентами LangChain використовуються LLM для вирішення, які інструменти викликати. Словник:
- agent — LLM, який спостерігає за контекстом, роздумує над ним і вибирає інструменти для виклику
- ** tool ** — функція, яку може викликати агент, з назвою і описом
- ** agent executor ** — цикл виконання, який викликає агента і виконує обрані ним інструменти
- «Агент вирішує, який інструмент використовувати» — описує шаблон ReAct
- «Ми даємо агенту блокнот» — проміжні кроки обґрунтування, видимі під час виконання агента
- ** final answer ** — відповідь агента після завершення його обґрунтування і викликів інструментів
Ключовий словник
| Term | Definition |
|---|---|
| LCEL | LangChain Expression Language, a declarative syntax for composing pipelines |
| Runnable | The base interface that all LCEL components implement |
| retriever | A component that fetches relevant documents for a given query |
| embed | Convert text to a numerical vector for semantic similarity search |
| chunk | A segment of a document, produced by a text splitter |
| overlap | Shared content between adjacent chunks to preserve context at boundaries |
| rerank | A second-pass relevance sorting of retrieved documents |
| RAG | Retrieval Augmented Generation — grounding LLM responses in retrieved documents |
| agent | An LLM that selects and calls tools to complete a task |
| agent executor | The loop that runs an agent and handles tool calls |
Практичні поради
-
** Накресліть ваш конвеєр RAG у вигляді діаграми і опишіть його англійською мовою. ** Вправляйтеся у тому, щоб сказати: « Запит користувача вбудовано, передано до програми отримання, яка повертає перші п’ ять шматків зі сховища векторів. Частини і початковий запит буде відформатовано у шаблон підказки, який буде надіслано до моделі. Відповідь моделі розбирається і повертається користувачеві.»
-
** Прочитайте « Як- зробити » LangChain англійською мовою. ** Вони практичні, добре написані і використовують послідовний словник. Зверніть увагу, як вони описують склад ланцюга з оператором труби.
-
** Використовуйте « пошук », а не « пошук ». ** Інженери, які знають LangChain, кажуть « ми використовуємо пошук », а не « ми шукаємо у базі даних ». Використання правильної назви абстракції свідчить про знайомство з платформою.
-
** Практика пояснення стратегії комбінування. ** Поширена тема інтерв’ю та обговорення архітектури: “Більші шматки надають більше контексту, але можуть містити незначну інформацію. Менші шматки є більш точним, але можуть втратити контекст. Ми використовуємо перекриття для зменшення втрати інформації на межах»
Conclusion
Словниковий запас LangChain — LCEL, retriever, chunk, embed, RAG, agent — став стандартом у інженерному співтоваристві LLM. Отримання знань про ці терміни допоможе вам читати документацію, розуміти перегляд коду і писати документацію з архітектурою з більшою ясністю. Оскільки LLM-застосунки переходять від прототипів до виробництва, точне спілкування про компоненти трубопроводу стає все більш важливим для вирівнювання команди і ефективного зневадження.
Навигація Nuance: Common Phrases in LangChain Discussions (англійською)
Будьмо чесними - навіть досвідчені розробники іноді натякають на точну мову, коли обговорюють складні системи ШІ, такі як ті, що побудовані з LangChain. Це не просто про те, щоб знати визначення таких термінів, як “RAG pipeline” або “LCEL chain”; це про розуміння того, як вони використовуються в розмовах, перегляді коду і документації. Ключовою частиною освоєння професійної англійської мови є розпізнавання тонких відмінностей у фразуваннях, які можуть кардинально змінити значення і вплинути на співпрацю.
Одне з найчастіших джерел плутанини виникає при обговоренні * стану * компонента. Ви можете почути, як хтось каже: « Цей засіб пошуку не повертає жодних відповідних документів ». Це цілком прийнятно, але ви можете також точніше сформулювати це повідомлення так: « Процес пошуку на даний момент не повертає жодних результатів, які б відповідали вказаному запиту ». У цьому випадку слід підкреслити, що помилка стосується * самого процесу * — логіки і налаштування засобу пошуку, а не просто відсутності виводу. Аналогічно, під час перегляду коду, пов’ язаного з ланцюгом LCEL, ви часто побачите коментарі на зразок « Покращити затримку ». Проте, більш конструктивним підходом буде: « Розгляньте можливість оптимізації потоку виконання ланцюга, щоб зменшити час відповіді, можливо, за допомогою кешування часто використовуваних даних ». Перший варіант є нечітким, другий пропонує конкретні рекомендації.
Іншою областю, де нюанс має значне значення, є опис *зв’язку * між компонентами в конвеєрі RAG. Замість того, щоб сказати «ЛЛМ потрібно більше пам’яті», краще було б сказати «Велика мова модель вимагає розширеного контекстного вікна, щоб ефективно синтезувати інформацію з декількох отриманих документів». Це підкреслює конкретне обмеження - здатність моделі - і обрамляє її як вимогу додаткових ресурсів, а не загальний заклик до поліпшення. Крім того, при написанні PR-описів, уникайте надмірно ентузіастичних висловлювань типу «Це призведе до революції в нашому пошуку!» Замість цього зосередьтеся на ясному описі * того, що * зміна робить і * чому * вона корисна: «Впроваджено новий індекс векторної бази даних для поліпшення швидкості і точності пошуку»
Нарешті, пам’ ятайте, що точність у документації є найважливішою. При поясненні складних взаємодій між компонентами, використання активного голосу і уникнення жаргону, де це можливо, значно поліпшить розуміння як для рідних, так і для нерідних носіїв англійської мови. Це про передачу інформації чітко і ефективно - а не просто перелік технічних термінів.
# Example: Using LangChain's ChromaDB Retriever
from langchain_community.vectorstores import Chroma
db = Chroma(persistential_directory="db") # Assuming a local database directory
query = "What is the capital of France?"
results = db.similarity_search(query, k=3) # Retrieve top 3 results
print(results)