Snowpark Container Prompt
Public preview
Snowpark Container Prompt is an orchestration component that lets you host your large language models within your Snowpark Container Services.
This topic presumes you have a strong knowledge of Snowpark Container Services and have already set up your Snowpark container. To learn more about creating an app, read our guide How to create a Snowpark Container Services application.
Matillion sends your data to your Snowflake warehouse as a user-defined function (UDF). A unique ID is assigned to the UDF sent to Snowflake Container Services. Matillion does not retain this ID once your data has been sent to Snowflake Container Services. Your application that is running in your Snowpark container will receive the UDF data as a JSON payload in the format of an array of arrays where each sub-array represents a row of data:
{
"data": [
[0, "System Prompt", "User Prompt", {"Input Column Name": "Input Column Value"}, {"metadata key": "metadata value"}]
]
}
Your app should be set up to receive the data in this format.
You may wish to read the following Snowflake documentation before getting started with this component.
- Read Available regions to check whether Snowpark Container Services is available in your preferred region.
- Read Service Specification Reference for detailed information about the Snowpark Container Services specification.
Properties
Name
= string
A human-readable name for the component.
Database
= drop-down
The Snowflake database to connect to. The special value, [Environment Default], will use the database defined in the environment. Read Databases, Tables and Views - Overview to learn more.
Schema
= drop-down
The Snowflake schema to connect to. The special value, [Environment Default], will use the schema defined in the environment. Read Database, Schema, and Share DDL to learn more.
Service
= drop-down
Select your Snowpark Container Services service. The services available in this list will depend on the selected database and schema.
Endpoint Name
= drop-down
Select the endpoint name representing the TCP network port that your application exposes.
Endpoint Path
= string
The path to your selected endpoint.
Metadata
= column editor
Optionally supply key:value metadata pairs such as top_p
, n
, max_tokens
, and so on to be sent to the large language model.
Ensure that no personal data, sensitive data, export-controlled data, or other regulated data is entered as metadata in the specification file.
Database
= drop-down
The Snowflake source database. The special value, [Environment Default], will use the database defined in the environment. Read Databases, Tables and Views - Overview to learn more.
Schema
= drop-down
The Snowflake source schema. The special value, [Environment Default], will use the schema defined in the environment. Read Database, Schema, and Share DDL to learn more.
Table
= drop-down
An existing Snowflake table to use as the input.
Key Column
= drop-down
Set a column as the primary key. Join the results back to the input table.
Limit
= integer
Set a limit for the numbers of rows from the table to load. The default is 1000.
User Context
= text editor
Provide your prompt. When Output Format is TEXT, this property is where you must specify all of the questions that you wish the LLM to provide answers to.
Prompts should define the following information:
- A persona. Who or what should the model impersonate when contextualizing their generative responses?
- A context. Contextualize the situation for the model to enhance its responses.
- A tone. What kind of language do you want the model to use?
Providing an example output may improve performance.
Inputs
= column editor
Select the source columns to feed as input to the prompt component.
- Column Name: A column from the input table.
- Descriptive Name: An alternate descriptive name to better contextualize the column. Recommended if your column names are low-context.
Output Format
= drop-down
Choose TEXT or JSON. Choosing JSON will activate an additional property, Outputs.
Outputs
= column editor
JSON only.
Define the output columns the prompt component will generate.
- Output: Key of a
key:value
JSON pair. For example, an output might be "review_score". - Context: Text that defines the output you expect the model to provide—that is, some task for the model to perform. For example, "Give a score between 0 and 10 on the level of satisfaction you feel in the user's review where 0 is completely dissatisfied and 10 is extremely satisfied." You may wish to use this parameter to configure the tone of the model (where applicable).
Database
= drop-down
The Snowflake destination database. The special value, [Environment Default], will use the database defined in the environment. Read Databases, Tables and Views - Overview to learn more.
Schema
= drop-down
The Snowflake destination schema. The special value, [Environment Default], will use the schema defined in the environment. Read Database, Schema, and Share DDL to learn more.
Table
= string
The new Snowflake table to load your prompt output into. Will create a new table if one does not exist. Otherwise, will replace any existing table of the same name.
Create Table Options
- Replace if Table Exists: The pipeline will run despite the table already existing. The table will be recreated.
- Fail if Table Exists: If the table already exists, the pipeline will fail to run.
Enable RAG
= boolean
Click Yes to enable Retrieval-Augmented Generation (RAG). Using RAG optimizes an LLM output by invoking an authoritative knowledge base outside of the LLM's initial training data sources. By using RAG, you can extend an LLM's capabilities to specific domains, such as your organization's documentation, without needing to retrain the model.
Defaults to No.
Pretext
= text editor
Add text to your LLM prompt before the RAG data is listed, thus instructing the LLM what to do with the RAG data. For example, you might wish to use RAG to search relevant documentation snippets to answer a question.
Example:
"Use any of the following documentation snippets in your response, if relevant:"
Search Column
= drop-down
Choose a column in the source table that contains a search term for the vector database. The value is then taken from that column and a vector search is performed. For example, a column value might be a user question such as "How do I log in?". A search is then performed on the vector database using the value string, which will return N number of relevant data. N is defined by the Top K parameter, further down.
If your vector database contained vectors created from chunks of text documentation, in this scenario the RAG data returned may include the chunk "to log in, click on the key button in the top right and enter your username and password". This data is then inserted into the llm prompt to help provide relevant context.
Embedding Provider
= drop-down
The embedding provider is the API service used to convert the search term into a vector. Choose either OpenAI or Amazon Bedrock. The embedding provider receives a search term (e.g. "How do I log in?") and returns a vector.
Choose your provider:
OpenAI API Key
= drop-down
Use the drop-down menu to select the corresponding secret definition that denotes the value of your OpenAI API key.
Read Secret definitions to learn how to create a new secret definition.
To create a new OpenAI API key:
- Log in to OpenAI.
- Click your avatar in the top-right of the UI.
- Click View API keys.
- Click + Create new secret key.
- Give a name for your new secret key and click Create secret key.
- Copy your new secret key and save it. Then click Done.
Embedding Model
= drop-down
Select an embedding model.
Currently supports:
- text-embedding-ada-002
- text-embedding-3-small
- text-embedding-3-large
Embedding AWS Region
= drop-down
Select your AWS region.
Embedding Model
= drop-down
Select an embedding model.
Currently supports:
Vector Database
= drop-down
Select a vector database to use.
Currently supports Pinecone and Postgres.
Pinecone API Key
= drop-down
Use the drop-down menu to select the corresponding secret definition that denotes the value of your Pinecone API key.
Read Secret definitions to learn how to create a new secret definition.
Pinecone Index
= string
The name of the Pinecone vector search index to connect to. To retrieve an index name:
- Log in to Pinecone.
- Click PROJECTS in the left sidebar.
- Click a project tile. This action will open the list of vector search indexes in your project.
Pinecone Namespace
= string
The name of the Pinecone namespace. Pinecone lets you partition records in an index into namespaces. To retrieve a namespace name:
- Log in to Pinecone.
- Click PROJECTS in the left sidebar.
- Click a project tile. This action will open the list of vector search indexes in your project.
- Click on your vector search index tile.
- Click the NAMESPACES tab. Your namespaces will be listed.
Top K
= integer
The number of results to return from the vector database query.
Between 1-100.
Default is 3.
Data Lookup Strategy
= drop-down
Select the data lookup strategy. Pinecone only stores the vector associated with text data, and a JSON metadata blob. While the text data can be stored in the metadata blob, size limitations can affect coverage—for example when a user has a larger blob of text to be converted to a vector.
- Raw data in metadata: Choosing this option adds an additional property, Data Path, to provide the path to text data within the metadata JSON blob.
- Table details in metadata: Database, schema, and table information is used in the metadata to look up the text data in your warehouse table.
Data Path
= string
Set the path to the data in the metadata JSON blob.
Default is data
.
Host
= string
Your Postgres hostname.
Port
= string
The TCP port number the Postgres server listens on. The default is 5432
.
Database
= string
The name of your Postgres database.
Username
= string
Your Postgres username.
Password
= drop-down
Use the drop-down menu to select the corresponding secret definition that denotes the value of your Postgres password.
Read Secret definitions to learn how to create a new secret definition.
Schema
= drop-down
The Postgres schema. The available schemas are determined by the Postgres database you have provided.
Table
= drop-down
The table to load data from. The available tables are determined by the Postgres schema you have selected.
Key Column Name
= drop-down
The column in your table to use as the key column.
Text Column Name
= drop-down
The column in your table with your original text data.
Embedding Column Name
= drop-down
The column in your table used to store your embeddings.
Similarity Function
= drop-down
Select which similarity function (distance metrics) to use.
Top K
= integer
The number of results to return from the vector database query.
Between 1-100.
Default is 3.
Connection Options
= column editor
- Parameter: A JDBC Postgres parameter supported by the database driver.
- Value: A value for the given parameter.
Snowflake | Databricks | Amazon Redshift |
---|---|---|
✅ | ❌ | ❌ |