Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translate the chains docs into Korean #16

Open
wants to merge 1 commit into
base: docs/korean-translation
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ sidebar_position: 6

import DocCardList from "@theme/DocCardList";

# Getting Started: Chains
# Chains 시작하기

:::info
[Conceptual Guide](https://docs.langchain.com/docs/components/chains)
[개념 가이드](https://docs.langchain.com/docs/components/chains)
:::info

Using a language model in isolation is fine for some applications, but it is often useful to combine language models with other sources of information, third-party APIs, or even other language models. This is where the concept of a chain comes in.
일부 애플리케이션에서는 언어 모델을 단독으로 사용하는 것도 괜찮지만, 언어 모델을 다른 정보 소스, 타사 API 또는 다른 언어 모델과 결합하는 것이 유용할 때가 많습니다. 이때 체인이라는 개념이 등장합니다.

LangChain provides a standard interface for chains, as well as a number of built-in chains that can be used out of the box. You can also create your own chains.
LangChain은 체인을 위한 표준 인터페이스뿐만 아니라 즉시 사용할 수 있는 여러 가지 기본 제공 체인을 제공합니다. 또한 자신만의 체인을 만들 수도 있습니다.

<DocCardList />
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@ import ConvoRetrievalQAExample from "@examples/chains/conversational_qa.ts";

# `ConversationalRetrievalQAChain`

The `ConversationalRetrievalQA` chain builds on `RetrievalQAChain` to provide a chat history component.
`ConversationalRetrievalQA`체인은`RetrievalQAChain`을 기반으로 채팅 기록 구성 요소를 제공합니다.

It requires two inputs: a question and the chat history. It first combines the chat history and the question into a standalone question, then looks up relevant documents from the retriever, and then passes those documents and the question to a question answering chain to return a response.
여기에는 질문과 채팅 기록이라는 두 가지 입력이 필요합니다.

먼저 채팅 기록과 질문을 독립형 질문으로 결합한 다음 검색기에서 관련 문서를 조회한 다음 해당 문서와 질문을 질문 답변 체인에 전달하여 응답을 반환합니다.

검색기 하나를 만들려면 Retrieval가 필요합니다. 아래 예에서는 임베딩으로 만들 수 있는 vectorStore에서 Retrieval를 만들겠습니다.

To create one, you will need a retriever. In the below example, we will create one from a vectorstore, which can be created from embeddings.
import Example from "@examples/chains/conversational_qa.ts";

<CodeBlock language="typescript">{ConvoRetrievalQAExample}</CodeBlock>

In this code snippet, the fromLLM method of the `ConversationalRetrievalQAChain` class has the following signature:
이 코드 스니펫에서
`ConversationalRetrievalQAChain` 클래스의 fromLLM 메서드는 다음과 같은 서명을 가집니다:

```typescript
static fromLLM(
Expand All @@ -26,10 +30,10 @@ static fromLLM(
): ChatVectorDBQAChain
```

Here's an explanation of each of the attributes of the options object:
다음은 옵션 객체의 각 속성에 대한 설명입니다:

- `questionGeneratorTemplate`: A string that specifies a question generation template. If provided, the `ConversationalRetrievalQAChain` will use this template to generate a question from the conversation context, instead of using the question provided in the question parameter. This can be useful if the original question does not contain enough information to retrieve a suitable answer.
- `qaTemplate`: A string that specifies a response template. If provided, the `ConversationalRetrievalQAChain` will use this template to format a response before returning the result. This can be useful if you want to customize the way the response is presented to the end user.
- `returnSourceDocuments`: A boolean value that indicates whether the `ConversationalRetrievalQAChain` should return the source documents that were used to retrieve the answer. If set to true, the documents will be included in the result returned by the call() method. This can be useful if you want to allow the user to see the sources used to generate the answer. If not set, the default value will be false.
- `questionGeneratorTemplate`: 질문 생성 템플릿을 지정하는 문자열입니다. 이 템플릿을 제공하면 `ConversationalRetrievalQAChain`question 매개변수에 제공된 질문을 사용하는 대신 이 템플릿을 사용하여 대화 컨텍스트에서 질문을 생성합니다. 이는 원래 질문에 적절한 답변을 검색하기에 충분한 정보가 포함되어 있지 않은 경우에 유용할 수 있습니다.
- `qaTemplate`: 응답 템플릿을 지정하는 문자열입니다. 제공된 경우 `ConversationalRetrievalQAChain`은 결과를 반환하기 전에 이 템플릿을 사용하여 응답의 형식을 지정합니다. 최종 사용자에게 응답이 표시되는 방식을 사용자 지정하려는 경우 유용할 수 있습니다.
- `returnSourceDocuments`: 대화형 검색 쿼리 체인`이 답변을 검색하는 데 사용된 소스 문서를 반환할지 여부를 나타내는 Boolean 값입니다. true로 설정하면 호출() 메서드가 반환하는 결과에 문서가 포함됩니다. 사용자가 답을 생성하는 데 사용된 소스를 볼 수 있도록 하려는 경우 유용할 수 있습니다. 설정하지 않으면 기본값은 false가 됩니다.

In summary, the `questionGeneratorTemplate`, `qaTemplate`, and `returnSourceDocuments` options allow the user to customize the behavior of the `ConversationalRetrievalQAChain`
요약하면, `questionGeneratorTemplate`, `qaTemplate`, `returnSourceDocuments` 옵션을 통해 사용자는 `ConversationalRetrievalQAChain`의 동작을 사용자 정의할 수 있습니다.
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,20 @@ import CodeBlock from "@theme/CodeBlock";

# Document QA Chains

LangChain provides chains used for processing unstructured text data: `StuffDocumentsChain`, `MapReduceDocumentsChain` and `RefineDocumentsChain`.
These chains are the building blocks more complex chains for processing unstructured text data and receive both documents and a question as input. They then utilize the language model to provide an answer to the question based on the given documents.
LangChain은 비정형 텍스트 데이터를 처리하는 데 사용되는 체인을 제공합니다. (`StuffDocumentsChain`, `MapReduceDocumentsChain`, `RefineDocumentsChain`)

- `StuffDocumentsChain`: This chain is the simplest of the 3 chains and simply injects all documents passes in into the prompt. It then returns the answer to the question, using all documents as context. It is suitable for QA tasks over a small number of documents.
- `MapReduceDocumentsChain`: This chain adds a preprocessing step to select relevant portions of each document until the total number of tokens is less than the maximum number of tokens allowed by the model. It then uses the transformed docs as context to answer the question. It is suitable for QA tasks over larger documents, and it runs the preprocessing step in parallel, which can reduce the running time.
- `RefineDocumentsChain`: This chain iterates over the documents one by one to update a running answer, at each turn using the previous version of the answer and the next doc as context. It is suitable for QA tasks over a large number of documents.
이러한 체인은 비정형 텍스트 데이터를 처리하기 위한 더 복잡한 체인의 기본 구성 요소이며 문서와 질문을 모두 입력으로 받습니다.

## Usage, `StuffDocumentsChain` and `MapReduceDocumentsChain`
그런 다음 언어 모델을 활용하여 주어진 문서를 기반으로 질문에 대한 답을 제공합니다.

- `StuffDocumentsChain`: 이 체인은 세 가지 체인 중 가장 간단한 체인으로, 입력된 모든 문서를 프롬프트에 삽입하기만 하면 됩니다. 그런 다음 모든 문서를 컨텍스트로 사용하여 질문에 대한 답을 반환합니다. 적은 수의 문서에 대한 QA 작업에 적합합니다.
- `MapReduceDocumentsChain`: 이 체인은 총 토큰 수가 모델에서 허용하는 최대 토큰 수보다 작아질 때까지 각 문서의 관련 부분을 선택하는 전처리 단계를 추가합니다. 그런 다음 변환된 문서를 컨텍스트로 사용하여 질문에 답변합니다. 큰 문서에 대한 QA 작업에 적합하며 전처리 단계를 병렬로 실행하여 실행 시간을 줄일 수 있습니다.
- `RefineDocumentsChain`: 이 체인은 문서를 하나씩 반복하여 실행 중인 답변을 업데이트하며, 매번 이전 버전의 답변과 다음 문서를 컨텍스트로 사용합니다. 많은 수의 문서에 대한 QA 작업에 적합합니다.

## 사용법, `StuffDocumentsChain` 과 `MapReduceDocumentsChain`

<CodeBlock language="typescript">{QAExample}</CodeBlock>

## Usage, `RefineDocumentsChain`
## 사용법, `RefineDocumentsChain`

<CodeBlock language="typescript">{RefineExample}</CodeBlock>
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ sidebar_label: Index Related Chains

import DocCardList from "@theme/DocCardList";

# Index Related Chains
# Index 관련 Chains

:::info
[Conceptual Guide](https://docs.langchain.com/docs/components/chains/index_related_chains)
[개념 가이드](https://docs.langchain.com/docs/components/chains/index_related_chains)
:::

Chains related to working with unstructured data stored in indexes.
인덱스에 저장된 비정형 데이터 작업과 관련된 체인입니다.

<DocCardList />
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ import CodeBlock from "@theme/CodeBlock";

# `RetrievalQAChain`

The `RetrievalQAChain` is a chain that combines a `Retriever` and a QA chain (described above). It is used to retrieve documents from a `Retriever` and then use a `QA` chain to answer a question based on the retrieved documents.
`RetrievalQAChain`은 위에서 설명한 `Retriever`QA 체인을 결합한 체인입니다.

## Usage
`Retriever`에서 문서를 검색한 다음 `QA` 체인을 사용하여 검색된 문서를 기반으로 질문에 답변하는 데 사용됩니다.

In the below example, we are using a `VectorStore` as the `Retriever`. By default, the `StuffDocumentsChain` is used as the `QA` chain.
## 사용법

아래 예제에서는 `VectorStore`를 `Retriever`로 사용하고 있습니다. 기본적으로 `StuffDocumentsChain`이 `QA` 체인으로 사용됩니다.

<CodeBlock language="typescript">{RetrievalQAExample}</CodeBlock>

## Usage, with a custom `QA` chain
## 사용자 정의 `QA` chain 사용법

In the below example, we are using a `VectorStore` as the `Retriever` and a `RefineDocumentsChain` as the `QA` chain.
아래 예제에서는 `VectorStore``Retriever`로, `RefineDocumentsChain``QA` 체인으로 사용하고 있습니다.

<CodeBlock language="typescript">{RetrievalQAExampleCustom}</CodeBlock>
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ sidebar_label: LLM Chain
import CodeBlock from "@theme/CodeBlock";
import Example from "@examples/chains/llm_chain.ts";

# Getting Started: LLMChain
# LLMChain 시작하기

:::info
[Conceptual Guide](https://docs.langchain.com/docs/components/chains/llm-chain)
[개념 가이드](https://docs.langchain.com/docs/components/chains/llm-chain)
:::

An `LLMChain` is a simple chain that adds some functionality around language models. It is used widely throughout LangChain, including in other chains and agents.
`LLMChain`은 언어 모델에 몇 가지 기능을 추가하는 간단한 체인입니다. 다른 체인 및 에이전트를 포함하여 LangChain 전체에서 널리 사용됩니다.

An `LLMChain` consists of a `PromptTemplate` and a language model (either and LLM or chat model).
`LLMChain``PromptTemplate`과 언어 모델(LLM 또는 채팅 모델 중 하나)로 구성됩니다.

We can construct an LLMChain which takes user input, formats it with a PromptTemplate, and then passes the formatted response to an LLM:
다음과 같이 사용자 입력을 받아 `PromptTemplate`로 형식을 지정한 다음 형식이 지정된 응답을 LLM에 전달하는 LLMChain을 구성할 수 있습니다.

<CodeBlock language="typescript">{Example}</CodeBlock>
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ sidebar_label: Other Chains

import DocCardList from "@theme/DocCardList";

# Other Chains
# 다른 Chains

This section highlights other examples of chains that exist.
이 섹션에서는 존재하는 체인의 다른 예시를 강조합니다.

<DocCardList />
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,31 @@ import SqlDBExample from "@examples/chains/sql_db.ts";

# `SqlDatabaseChain`

The `SqlDatabaseChain` allows you to answer questions over a SQL database.
This example uses Chinook database, which is a sample database available for SQL Server, Oracle, MySQL, etc.
`SqlDatabaseChain`을 사용하면 SQL 데이터베이스를 통해 질문에 답할 수 있습니다.
이 예제에서는 SQL Server, Oracle, MySQL 등에서 사용할 수 있는 샘플 데이터베이스인 Chinook 데이터베이스를 사용합니다.

## Set up
## 설정

First install `typeorm`:
먼저 `typeorm`을 설치합니다:

```bash npm2yarn
npm install typeorm
```

Then install the dependencies needed for your database. For example, for SQLite:
그런 다음 데이터베이스에 필요한 종속성을 설치합니다. 예를 들어, SQLite의 경우:

```bash npm2yarn
npm install sqlite3
```

For other databases see https://typeorm.io/#installation
다른 데이터베이스는 https://typeorm.io/#installation 을 참조하세요.

Finally follow the instructions on https://database.guide/2-sample-databases-sqlite/ to get the sample database for this example.
마지막으로 https://database.guide/2-sample-databases-sqlite/ 의 지침에 따라 이 예제에 대한 샘플 데이터베이스를 가져옵니다.

<CodeBlock language="typescript">{SqlDBExample}</CodeBlock>

You can include or exclude tables when creating the `SqlDatabase` object to help the chain focus on the tables you want.
It can also reduce the number of tokens used in the chain.
'SqlDatabase' 객체를 생성할 때 테이블을 포함하거나 제외하여 체인이 원하는 테이블에 집중할 수 있습니다.
또한 체인에 사용되는 토큰 수를 줄일 수 있습니다.

```typescript
const db = await SqlDatabase.fromDataSourceParams({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ import SummarizeExample from "@examples/chains/summarization_map_reduce.ts";

# Summarization

A summarization chain can be used to summarize multiple documents. One way is to input multiple smaller documents, after they have been divided into chunks, and operate over them with a `MapReduceDocumentsChain`.
요약 체인은 여러 문서를 요약하는 데 사용할 수 있습니다. 한 가지 방법은 여러 개의 작은 문서를 청크로 나눈 후 `MapReduceDocumentsChain`으로 연산하는 것입니다.

<CodeBlock language="typescript">{SummarizeExample}</CodeBlock>
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@ sidebar_label: Prompt Selectors
# Prompt Selectors

:::info
[Conceptual Guide](https://docs.langchain.com/docs/components/chains/prompt-selector)
[개념 가이드](https://docs.langchain.com/docs/components/chains/prompt-selector)
:::

Oftentimes, you will want to programmatically select a prompt based on the type of model you are using in a chain. This is especially relevant when swapping chat models and LLMs.
종종 체인에서 사용 중인 모델 유형에 따라 프롬프트를 프로그래밍 방식으로 선택해야 할 때가 있습니다. 특히 채팅 모델과 LLM을 교체할 때 유용합니다.

The interface for prompt selectors is quite simple:
프롬프트 선택기의 인터페이스는 매우 간단합니다.

```typescript
abstract class BasePromptSelector {
abstract getPrompt(llm: BaseLanguageModel): BasePromptTemplate;
}
```

The `getPrompt` method takes in a language model and returns an appropriate prompt template.
`getPrompt` 메서드는 언어 모델을 사용하고 적절한 프롬프트 템플릿을 반환합니다.

We currently offer a `ConditionalPromptSelector` that allows you to specify a set of conditions and prompt templates. The first condition that evaluates to true will be used to select the prompt template.
현재 조건 집합과 프롬프트 템플릿을 지정할 수 있는 `ConditionalPromptSelector`를 제공하고 있습니다. 참으로 평가되는 첫 번째 조건은 프롬프트 템플릿을 선택하는 데 사용됩니다.

```typescript
const QA_PROMPT_SELECTOR = new ConditionalPromptSelector(DEFAULT_QA_PROMPT, [
[isChatModel, CHAT_PROMPT],
]);
```

This will return `DEFAULT_QA_PROMPT` if the model is not a chat model, and `CHAT_PROMPT` if it is.
이 함수는 모델이 채팅 모델이 아닌 경우 `DEFAULT_QA_PROMPT`를 반환하고, 채팅 모델인 경우 `CHAT_PROMPT`를 반환합니다.

The example below shows how to use a prompt selector when loading a chain:
아래 예시는 체인을 로드할 때 프롬프트 선택기를 사용하는 방법을 보여줍니다:

```typescript
const loadQAStuffChain = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,20 @@ import SequentialChainExample from "@examples/chains/sequential_chain.ts";

# Sequential Chain

Sequential chains allow you to connect multiple chains and compose them into pipelines that execute some specific scenario.
시퀀셜 체인을 사용하면 여러 개의 체인을 연결하여 특정 시나리오를 실행하는 파이프라인으로 구성할 수 있습니다.

## `SimpleSequentialChain`

Let's start with the simplest possible case which is `SimpleSequentialChain`.
가능한 가장 간단한 경우인 `SimpleSequentialChain`부터 시작하겠습니다.

An `SimpleSequentialChain` is a chain that allows you to join multiple single-input/single-output chains into one chain.
SimpleSequentialChain은 여러 개의 단일 입력/단일 출력 체인을 하나의 체인으로 결합할 수 있는 체인입니다.

The example below shows a sample usecase. In the first step, given a title, a synopsis of a play is generated. In the second step, based on the generated synopsis, a review of the play is generated.
아래 예시는 샘플 사용 사례입니다. 첫 번째 단계에서는 제목이 주어지면 연극의 시놉시스를 생성합니다. 두 번째 단계에서는 생성된 시놉시스를 기반으로 연극에 대한 리뷰가 생성됩니다.

<CodeBlock language="typescript">{SimpleSequentialChainExample}</CodeBlock>

## `SequentialChain`

More advanced scenario useful when you have multiple chains that have more than one input or ouput keys.
입력 또는 출력 키가 두 개 이상인 여러 개의 체인이 있을 때 유용합니다.

<CodeBlock language="typescript">{SequentialChainExample}</CodeBlock>