completion.md 3.4 KB

serverless: preview
stack: preview 9.1.0

The COMPLETION command allows you to send prompts and context to a Large Language Model (LLM) directly within your ES|QL queries, to perform text generation tasks.

Syntax

COMPLETION [column =] prompt WITH inference_id

Parameters

column : (Optional) The name of the output column containing the LLM's response.

If not specified, the results will be stored in a column named `completion`.
If the specified column already exists, it will be overwritten with the new results.

prompt : The input text or expression used to prompt the LLM.

This can be a string literal or a reference to a column containing text.

inference_id : The ID of the inference endpoint to use for the task.

The inference endpoint must be configured with the `completion` task type.

Description

The COMPLETION command provides a general-purpose interface for text generation tasks using a Large Language Model (LLM) in ES|QL.

COMPLETION supports a wide range of text generation tasks. Depending on your prompt and the model you use, you can perform arbitrary text generation tasks including:

  • Question answering
  • Summarization
  • Translation
  • Content rewriting
  • Creative generation

Requirements

To use this command, you must deploy your LLM model in Elasticsearch as an ≈inference endpoint with the task type completion.

Examples

Use the default column name (results stored in completion column):

ROW question = "What is Elasticsearch?"
| COMPLETION question WITH test_completion_model
| KEEP question, completion
question:keyword completion:keyword
What is Elasticsearch? A distributed search and analytics engine

Specify the output column (results stored in answer column):

ROW question = "What is Elasticsearch?"
| COMPLETION answer = question WITH test_completion_model
| KEEP question, answer
question:keyword answer:keyword
What is Elasticsearch? A distributed search and analytics engine

Summarize the top 10 highest-rated movies using a prompt:

FROM movies
| SORT rating DESC
| LIMIT 10
| EVAL prompt = CONCAT(
   "Summarize this movie using the following information: \n",
   "Title: ", title, "\n",
   "Synopsis: ", synopsis, "\n",
   "Actors: ", MV_CONCAT(actors, ", "), "\n",
  )
| COMPLETION summary = prompt WITH test_completion_model
| KEEP title, summary, rating
title:keyword summary:keyword rating:double
The Shawshank Redemption A tale of hope and redemption in prison. 9.3
The Godfather A mafia family's rise and fall. 9.2
The Dark Knight Batman battles the Joker in Gotham. 9.0
Pulp Fiction Interconnected crime stories with dark humor. 8.9
Fight Club A man starts an underground fight club. 8.8
Inception A thief steals secrets through dreams. 8.8
The Matrix A hacker discovers reality is a simulation. 8.7
Parasite Class conflict between two families. 8.6
Interstellar A team explores space to save humanity. 8.6
The Prestige Rival magicians engage in dangerous competition. 8.5