ChatCompletion​Chat​Completion

Create a Retrieval Augmented Generation (RAG) pipeline.

yaml
type: "io.kestra.plugin.langchain4j.rag.ChatCompletion"

Chat with your data using Retrieval Augmented Generation (RAG). This flow will index documents and use the RAG Chat task to interact with your data using natural language prompts. The flow contrasts prompts to LLM with and without RAG. The Chat with RAG retrieves embeddings stored in the KV Store and provides a response grounded in data rather than hallucinating. WARNING: the KV embedding store is for quick prototyping only, as it stores the embedding vectors in Kestra's KV store an loads them all into memory.

yaml
id: rag
namespace: company.team

tasks:
  - id: ingest
    type: io.kestra.plugin.langchain4j.rag.IngestDocument
    provider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-embedding-exp-03-07
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddings:
      type: io.kestra.plugin.langchain4j.embeddings.KestraKVStore
    drop: true
    fromExternalURLs:
      - https://raw.githubusercontent.com/kestra-io/docs/refs/heads/main/content/blogs/release-0-22.md

  - id: chat_without_rag
    type: io.kestra.plugin.langchain4j.ChatCompletion
    provider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-2.0-flash
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    messages:
    - type: user
      content: Which features were released in Kestra 0.22?

  - id: chat_with_rag
    type: io.kestra.plugin.langchain4j.rag.ChatCompletion
    chatProvider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-2.0-flash
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddingProvider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-embedding-exp-03-07
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddings:
      type: io.kestra.plugin.langchain4j.embeddings.KestraKVStore
    prompt: Which features were released in Kestra 0.22?

Chat with your data using Retrieval Augmented Generation (RAG) and a WebSearch content retriever. The Chat with RAG retrieves contents from a WebSearch client and provides a response grounded in data rather than hallucinating.

yaml
id: rag
namespace: company.team

tasks:
  - id: chat_with_rag_and_websearch_content_retriever
    type: io.kestra.plugin.langchain4j.rag.ChatCompletion
    chatProvider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-2.0-flash
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    contentRetrievers:
    - type: io.kestra.plugin.langchain4j.retriever.GoogleCustomWebSearch
      apiKey: "{{ secret('GOOGLE_SEARCH_API_KEY') }}"
      csi: "{{ secret('GOOGLE_SEARCH_CSI') }}"
    prompt: What is the latest release of Kestra?

Chat with your data using Retrieval Augmented Generation (RAG) and an additional WebSearch tool. This flow will index documents and use the RAG Chat task to interact with your data using natural language prompts. The flow contrasts prompts to LLM with and without RAG. The Chat with RAG retrieves embeddings stored in the KV Store and provides a response grounded in data rather than hallucinating. It may also include results from a web search engine if using the provided tool. WARNING: the KV embedding store is for quick prototyping only, as it stores the embedding vectors in Kestra's KV store an loads them all into memory.

yaml
id: rag
namespace: company.team

tasks:
  - id: ingest
    type: io.kestra.plugin.langchain4j.rag.IngestDocument
    provider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-embedding-exp-03-07
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddings:
      type: io.kestra.plugin.langchain4j.embeddings.KestraKVStore
    drop: true
    fromExternalURLs:
      - https://raw.githubusercontent.com/kestra-io/docs/refs/heads/main/content/blogs/release-0-22.md

  - id: chat_with_rag_and_tool
    type: io.kestra.plugin.langchain4j.rag.ChatCompletion
    chatProvider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-2.0-flash
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddingProvider:
      type: io.kestra.plugin.langchain4j.provider.GoogleGemini
      modelName: gemini-embedding-exp-03-07
      apiKey: "{{ secret('GEMINI_API_KEY') }}"
    embeddings:
      type: io.kestra.plugin.langchain4j.embeddings.KestraKVStore
    tools:
    - type: io.kestra.plugin.langchain4j.tool.GoogleCustomWebSearch
      apiKey: "{{ secret('GOOGLE_SEARCH_API_KEY') }}"
      csi: "{{ secret('GOOGLE_SEARCH_CSI') }}"
    prompt: What is the latest release of Kestra?
Properties

Chat Model Provider

Text prompt

The input prompt for the language model

Default {}

Chat configuration

Default { "maxResults": 3, "minScore": 0 }

Content Retriever Configuration

Additional content retrievers

Some content retrievers like WebSearch can be used also as tools, but using them as content retrievers will make them always used whereas tools are only used when the LLM decided to.

Embedding Store Model Provider

Optional, if not set, the embedding model will be created by the chatModelProvider. In this case, be sure that the chatModelProvider supports embeddings.

Embedding Store Provider

Optional if at least one contentRetrievers is provided

Tools that the LLM may use to augment its response

Generated text completion

The result of the text completion

Possible Values
STOPLENGTHTOOL_EXECUTIONCONTENT_FILTEROTHER

Finish reason

Token usage

Default 3

The maximum number of results from the embedding store.

Default 0

The minimum score, ranging from 0 to 1 (inclusive). Only embeddings with a score >= minScore will be returned.

Endpoint URL

Project location

Model name

Project ID

API endpoint

The Azure OpenAI endpoint in the format: https://{resource}.openai.azure.com/

Model name

API Key

Client ID

Client secret

API version

Tenant ID

API Key

Model name

Default https://api.deepseek.com/v1

API base URL

API Key

Default 3

Maximum number of results to return

SubType string
Min items 1

List of HTTP ElasticSearch servers.

Must be an URI like https://elasticsearch.com: 9200 with scheme and port.

Basic auth configuration.

SubType string

List of HTTP headers to be send on every request.

Must be a string with key value separated with : , ex: Authorization: Token XYZ.

Sets the path's prefix for every request used by the HTTP client.

For example, if this is set to /my/path, then any client request will become /my/path/ + endpoint. In essence, every request's endpoint is prefixed by this pathPrefix. The path prefix is useful for when ElasticSearch is behind a proxy that provides a base path or a proxy that requires all paths to start with '/'; it is not intended for other purposes and it should not be supplied in other scenarios.

Whether the REST client should return any response containing at least one warning header as a failure.

Trust all SSL CA certificates.

Use this if the server is using a self signed SSL certificate.

API Key

Model name

API Key

Model name

API base URL

API Key

Model endpoint

Model name

Basic auth password.

Basic auth username.

seed

Temperature

topK

topP

Default {{flow.id}}-embedding-store

The name of the K/V entry to use

API Key

Model name

AWS Access Key ID

Model name

AWS Secret Access Key

Default COHERE
Possible Values
COHERETITAN

Amazon Bedrock Embedding Model Type

The database name

The database server host

The database password

The database server port

The table to store embeddings in

The database user

Default false

Whether to use use an IVFFlat index

An IVFFlat index divides vectors into lists, and then searches a subset of those lists closest to the query vector. It has faster build times and uses less memory than HNSW but has lower query performance (in terms of speed-recall tradeoff).

API Key

Model name

API base URL

API Key

API Key

Default 3

Maximum number of results to return

SubType string

The MCP client command, as a list of command parts.

SubType string

Environment variables

API Key

API Key

SSE URL to the MCP server

Format duration

Connection timeout

The name of the index to store embeddings