Legen Sie einen Anbieter für ein Einbettungsmodell fest

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 3 Minuten Lesedauer
  • Bestimmen Sie, welchen KI-Anbieter verwendet werden soll, damit Ihr Einbettungsmodell in funktionieren kann KI-Suche Retrieval-Augmented Generation( RAG) Anwendung.

    Vorbereitungen

    Konfigurieren Sie einen Alias für Verbindungen und Anmeldeinformationen für Ihren bevorzugten Provider. Weitere Informationen finden Sie unter Create a Connection & Credential alias.

    Erforderliche Rolle: Administrator

    Prozedur

    1. Navigieren zu Alle, Und geben Sie dann ein sys_one_extend_Capability.list Im Filter, um zur Tabelle „OneExtend-Fähigkeiten“ zu wechseln.
    2. Wählen Sie aus Bringen Sie Ihr Eigenes Einbettungsmodell Mit Fähigkeit.
    3. Wählen Sie in der zugehörigen Liste OneExtend-Fähigkeitsdefinitionen die Option aus Neu .
    4. In Name Feld den Namen der Fähigkeitsdefinition eingeben.
      Beispiel: Einbettungserstellung ( Azure OpenAI)
    5. In API-Typ Feld auswählen System .
    6. In API Wählen Sie das Suchsymbol ( Suchen Sie Dokumente mithilfe der Liste.), um das Dokument auszuwählen.
      1. In Tabellenname Wählen Sie die Tabelle One API-Systemausführer [one_api_System_Executor] aus.
      2. In Dokument Feld auswählen Generische Einbettung .
      3. Wählen Sie OK.
    7. In Alias Für Verbindungen Und Anmeldeinformationen Feld den Alias auswählen, den Sie in Ihr anwenderdefiniertes Einbettungsmodell integrieren möchten.
    8. Wählen Sie die Option Erweitert.
    9. Erstellen Sie vor- und Nachverarbeitungsskripts.
      Zum Aktivieren von KI-Suche RAG Anwendung um nahtlos mit Ihrem Einbettungsmodell zu arbeiten, müssen Sie vor- und Nachverarbeitungsskripts erstellen. Diese Skripts helfen dem KI-Suche RAG Anwendung Verstehen Sie das Format der Daten, die Ihr Modell erwartet und erstellt.
      Das folgende Beispiel zeigt das Präprozessorskript für Azure OpenAI Anforderungsstruktur.
      (function(inputs) {                                                               //// inputs is the capability inputs which contains request.
                  /* write code here to transform capability input to definition input.            
                   *{
      		"request": {                                                                  //request contains rawInput which will be system-provided.
      			"rawInput": {                                                          //rawInput contains passages(Array of text segments), type(Context of the input) and modelId(Name of the embedding model)
      				"passages": ["Sample text"],
      				"type": "ingest/query",
      				"model": "text-embedding-3-large"
      			},
      			"providerInput": {                                                     //providerInput should be populated using the relevant data from rawInput.passages.
      				"input": ["Sample text"]                                        //The field name "input" inside providerInput is provider-specific and rawInput.passages should be mapped to the appropriate field expected by your provider
      			}
      		}
      	  }
      	 try {
              var parsedInputs = JSON.parse(inputs);
              var request = parsedInputs.request;
              var rawInput = request.rawInput;
              var passagesArray = rawInput.passages;
              var type = rawInput.type;
      
              if (passagesArray && passagesArray.length > 0) {
                  parsedInputs.request.providerInput = {};
                  parsedInputs.request.providerInput.input = passagesArray;
              }
      
          } catch (ex) {
              gs.error("Exception occured while preprocessing of the inputs." + ex);
              throw new Error("Exception occured while OE preprocessing of the inputs : " + ex);
          }
      
          inputs = parsedInputs;
          return inputs;
      })(inputs);
      	 
      Das folgende Beispiel zeigt das Antwortpostprozessorskript für Azure OpenAI Anforderungsstruktur.
      (function(outputs) {
          /* write code here to transform definition output to capability output.
      	* outputs contains result from the provider definition implementation.
      	* Expected outputs format from provider definition implementation in success scenario:
      	   "result": {
      			"provider": "custom_embedding_model",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"status": "success",
      			"response": {"object":"list","data":[{"object":"embedding","index":0,"embedding":[0.008695375,0.0011188902]},{"object":"embedding","index":1,"embedding":[0.012572239,0.017366657]}],"model":"text-embedding-3-large","usage":{"prompt_tokens":4,"total_tokens":4}}
      	    }
      	* Expected outputs format from provider definition implementation in error scenario:
      	   "result": {
      			"responseHeaders": "[Content-Length: 224\r\n, Content-Type: application/json\r\n, apim-request-id: 72b1519e-a367-4f01-b249-8f37d35d50d3\r\n, Date: Thu, 01 May 2025 12:03:44 GMT\r\n]",
      			"responseBody": "{\"error\":{\"code\":\"401\",\"message\":\"Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.\"}}",
      			"provider": "custom_embedding_model",
      			"errorCode": "401",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"error": "PermissionDenied",
      			"status": "error"
      	   }
      	* Extract the embeddings from the response key of the provider result (in a successful scenario) and elevate it in the final output. Sample format for the same:
      	  "result": {
      			"provider": "custom_embedding_model",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"status": "success",
      			"response": {"object":"list","data":[{"object":"embedding","index":0,"embedding":[0.008695375,0.0011188902]},{"object":"embedding","index":1,"embedding":[0.012572239,0.017366657]}],"model":"text-embedding-3-large","usage":{"prompt_tokens":4,"total_tokens":4}}
      			"embeddings": [[0.008695375,0.0011188902], [0.012572239,0.017366657]]
      	   }
      	*/
          try {
              outputs = JSON.parse(outputs);
              var embeddingsArray = [];
      
              if (!gs.nil(outputs.result) && !gs.nil(outputs.result.response)) {
                  var responseBody = outputs.result.response;
                  if (!gs.nil(responseBody)) {
                      var data = JSON.parse(responseBody).data;
                      for (var i = 0; i < data.length; i++) {
                          var embeddingResponse = data[i];
                          if (!gs.nil(embeddingResponse) && !gs.nil(embeddingResponse.embedding))
                              embeddingsArray.push(embeddingResponse.embedding);
                      }
                  }
      
                  outputs.result.embeddings = embeddingsArray;
              }
          } catch (ex) {
              gs.error("Exception occured while OE postprocessing of the outputs = " + ex);
              outputs.result.status = "error";
              outputs.result.error = gs.getMessage("Exception occured while OE postprocessing of the outputs : " + ex);
          }
      
          return outputs;
      })(outputs);
    10. Wählen Sie Absenden.