Configure The Smart Answers Pipelines (5.3 and above)

Before beginning this procedure, train a machine learning model using either the FAQ method or the cold start method.

Note
For instructions for Fusion 5.1 and 5.2, see Configure The Smart Answers Pipelines (5.1 and 5.2 only).

Regardless of how you set up your model, the deployment procedure is the same:

1. Create the Milvus collection

For complete details about job configuration options, see the Create Collections in Milvus job.

  1. Navigate to Collections > Jobs > Add + and select Create Collections in Milvus.

  2. Configure the job:

    1. Enter an ID for this job.

    2. Under Collections, click Add.

    3. Enter a collection name.

    4. In the Dimension field, enter the dimension size of vectors to store in this Milvus collection. The Dimension should match the size of the vectors returned by the encoding model. For example, the Smart Answers Pre-trained Coldstart models outputs vectors of 512 dimension size. Dimensionality of encoders trained by Smart Answers Supervised Training job depends on the provided parameters and printed in the training job logs. See Smart Answers Supervised model training for more details.

  3. Click Save.

    The Create Collections in Milvus job can be used to create multiple collections at once. In this image, the first collection is used in the indexing and query steps. The other two collections are used in the example. Create Collections in Milvus job

  4. Click Run > Start to run the job.

2. Configure the index pipeline

  1. Open the Index Workbench.

  2. Load or create your datasource using the default smart-answers index pipeline.

    smart-answers default index pipeline

  3. Configure the Encode into Milvus stage:

    1. change the value of Model ID to match the model deployment name you chose when you configured the model training job.

    2. Change Field to Encode to the document field name to be processed and encoded into dense vectors.

    3. Ensure the Encoder Output Vector matches the output vector from the chosen model.

    4. Ensure the Milvus Collection Name matches the collection name created via the Create Milvus Collection job.

      Tip
      To test out your settings, turn on Fail on Error in the Encode into Milvus stage and Apply the changes. This will cause an error message to display if any settings need to be changed.

      Encode Into Milvus index stage

  4. Save the datasource.

  5. Index your data.

3. Configure the query pipeline

  1. Open the Query Workbench.

  2. Load the default smart-answers query pipeline.

    smart-answers default query pipeline

  3. Configure the Milvus Query stage:

    1. Change the Model ID value to match the model deployment name you chose when you configured the model training job.

    2. Ensure the Encoder Output Vector matches the output vector from the chosen model.

    3. Ensure the Milvus Collection Name matches the collection name created via the Create Milvus Collection job.

    4. Milvus Results Context Key can be changed as needed. It will be used in the Milvus Ensemble Query Stage to calculate the query score.

      Milvus Query stage

  4. In the Milvus Ensemble Query stage, update the Enemble math expression as needed based on your model and the name used in the prior stage for the storing the Milvus results.

    Milvus Ensemble Query stage

  5. Save the query pipeline.

Pipeline Setup Example

Index and retrieve the question and answer together

To show question and answer together in one document (that is, treat the question as the title and the answer as the description), you can index them together in the same document. You can still use the default smart-answers index and query pipelines with a few additional changes.

Prior to configuring the Smart Answers pipelines, use the Create Milvus Collection job to create two collections, question_collection and answer_collection, to store the encoded "questions" and the encoded "answers", respectively.

Index Pipeline

As shown in the pictures below, you will need two Encode into Milvus stages, named Encode Question and Encode Answer respectively.

Encode Question (Encode Into Milvus) stage

Pipeline setup example - Encode Question stage

Encode Answer (Encode Into Milvus) stage

Pipeline setup example - Encode Answer stage

In the Encode Question stage, specify Field to Encode to be title_t and change the Milvus Collection Name to match the new Milvus collection, question_collection.

In the Encode Answer stage, specify Field to Encode to be description_t and change the Milvus Collection Name to match the new Milvus collection, answer_collection.

(For more detail, see Smart Answers Detailed Pipeline Setup.)

Query Pipeline

Since we have two dense vectors generated during indexing, at query time we need to compute both query to question distance and query to answer distance. This can be set up as the pictures shown below with two Milvus Query Stages, one for each of the two Milvus collections. To store those two distances separately, the Milvus Results Context Key needs to be different in each of these two stages.

In the Query Questions stage, we set the Milvus Results Context Key to milvus_questions and the Milvus collection name to question_collection. .Query Questions (Milvus Query) stage Pipeline setup example - Query Questions stage

In the Query Answers stage, we set the Milvus Results Context Key to milvus_answers and the Milvus collection name to answer_collection. .Query Answers (Milvus Query) stage Pipeline setup example - Query Answers stage

Now we can ensemble them together with the Milvus Ensemble Query Stage with the Ensemble math expression combining the results from the two query stages. If we want the question scores and answer scores weighted equally, we would use: 0.5 * milvus_questions + 0.5 * milvus_answers. This is recommended especially when you have limited FAQ dataset and want to utilize both question and answer information.

Milvus Ensemble Query stage

Pipeline setup example - Milvus Ensemble Query stage

Evaluate the query pipeline

The Smart Answers Evaluate Pipeline job (Evaluate QnA Pipeline job in Fusion 5.1 and 5.2) evaluates the rankings of results from any Smart Answers pipeline and finds the best set of weights in the ensemble score. See Evaluate a Smart Answers Pipeline for setup instructions.