Zum Hauptinhalt springen
Version: 1.15.0

Editieren eines Knowledge Stores

Über die Übersichtsseite der Knowledge Stores können einige Einstellungen editiert werden. Nutzen Sie dafür den Bleistiftknopf. Folgende Einstellungen sind editierbar:

  1. Anzeigename
  2. Beschreibung
  3. Begrüßungstext
  4. Anzahl Dokumente pro Abruf
  5. Completion Modell
  6. System Prompt Template
  7. User Prompt Template: Diese Option ist nur verfügbar, wenn Ihre Organisation über das Feature verfügt.

Erweiterte Einstellungen

An einem Knowledge Store können erweiterte Einstellungen vorgenommen werden.

warning

Achtung: Die Einstellungen können die Funktionalität stark beeinflussen. Bitte nur verwenden, wenn Sie sich sicher über die Auswirkungen sind.

  1. Überspringe Anfrage an das Sprachmodell
    Es wird keine Anfrage an das Sprachmodell durchgeführt. Stattdessen wird das User Prompt Template als Antwort zurückgegeben.

  2. Bevorzuge angegebene Templates für alle Prozesstypen und Zwischenschritte
    Es wird versucht, für alle Prozesstypen und Zwischenschritte die angegebenen Templates zu verwenden. Wenn kein Template gefunden wird, werden systemseitige Templates verwendet.

  3. Custom Retrieval Queries Dieses Feature muss spezifisch für ihre Organisation freigeschaltet werden. Bitte wenden Sie sich an den Support, falls Sie Zugriff auf diese Komponente benötigen. Im JavaScript Editor kann nun spezifisch die Query für das Abfragen der Vektor- und Dokumentendatenbank modifiziert werden, um beispielsweise besondere Dokumente mehr in den Vordergrund zu heben oder beispielsweise Dokumente mit einem jüngeren Datum besonders hervorzuheben. Intern bezieht sich dies auf Elasticsearch oder Opensearch.

Custom Retrieval Queries

Im folgenden finden Sie zwei Beispiele für Elasticsearch und Opensearch. Welche Distribution in ihrer Umgebund verfügbar ist, können sie aktuell bei uns erfragen.

Um die Queries selbst anpassen zu können, verweisen wir an dieser Stelle an die jeweilige Dokumentation des Anbieters. Sollten etwaige Javaklassen in JavaScript nicht zur Verfügung stehen, kann dies in künftigen Releases angepasst werden.

Dokumentation für Elasticsearch:

//JavaScript zur Modifizierung einer ElasticSearch Query
function modifiedVSRequest(searchRequest) {
var RescoreQuery = Java.type('co.elastic.clients.elasticsearch.core.search.RescoreQuery');
var SearchRequest = Java.type('co.elastic.clients.elasticsearch.core.SearchRequest');
var JsonData = Java.type('co.elastic.clients.json.JsonData');
var rescoreQuery = RescoreQuery.of(b => b.query(
b2 => b2.bool(
b3 => b3
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-6M"))
.boost(1.5)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-12M"))
.boost(1.4)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-24M"))
.boost(1.3)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-6y"))
.boost(1.1)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-10y"))
.boost(1.)
)
)
)
)
.queryWeight(1.)
.rescoreQueryWeight(1.7));
var params = {
"query_value": JsonData.of(output.getFloatDenseVectorList()),
"field": JsonData.of("content_vector")
}
return SearchRequest.of(
b => b.index(searchRequest.index())
.query(b3 => b3.scriptScore(
b4 => b4.query(
b2 => b2.matchAll(
b6 => b6
)
).script(script => script.inline(
b5 => b5.source("cosineSimilarity(params.query_value, params.field) + 1.0 + _score")
.params(
params
)
)
)
)
)
.rescore(b2 => b2.query(rescoreQuery)));
}
function modifiedDSRequest(searchRequest) {
var RescoreQuery = Java.type('co.elastic.clients.elasticsearch.core.search.RescoreQuery');
var SearchRequest = Java.type('co.elastic.clients.elasticsearch.core.SearchRequest');
var JsonData = Java.type('co.elastic.clients.json.JsonData');

var rescoreQuery = RescoreQuery.of(b => b.query(
b2 => b2.bool(
b3 => b3
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-6M"))
.boost(1.5)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-12M"))
.boost(1.4)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-24M"))
.boost(1.3)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-6y"))
.boost(1.1)
)
)
.should(
b4 => b4.range(
b5 => b5.field("metadata_date")
.gte(JsonData.of("now-10y"))
.boost(1.)
)
)
)
)
.queryWeight(1.)
.rescoreQueryWeight(1.7));
SearchRequest.of(
b => b.index(searchRequest.index())
.query(
b2 => b2.bool(
b3 => b3
.should(
b4 => b4.match(
b5 => b5.field("field_content")
.query(exchange.getUserInput().toString())
.fuzziness("AUTO")
)
)

.should(
b4 => b4.match(
b5 => b5.field("field_content")
.query(exchange.getUserInput().toString())
.boost(0.5)
)
)
)
)
.rescore(b0 => b0.query(rescoreQuery))

)

}
function getModifiedSearchRequest() {
if (typeof vsElasticSearchRequest !== 'undefined') {
return modifiedVSRequest(vsElasticSearchRequest);
}
if (typeof dsElasticSearchRequest !== 'undefined') {
return modifiedDSRequest(dsElasticSearchRequest);
}
}

getModifiedSearchRequest();

Dokumentation für Opensearch:

//JavaScript zur Modifizierung einer OpenSearch Query
function modifiedVSRequest(searchRequest) {
var QueryBuilders = Java.type('org.opensearch.index.query.QueryBuilders');
var QueryRescorerBuilder = Java.type('org.opensearch.search.rescore.QueryRescorerBuilder');
var Script = Java.type('org.opensearch.script.Script');
var params = {
"field": "content_vector",
"query_value": output.getFloatDenseVectorList()
};
var scriptScoreQuery = QueryBuilders.scriptScoreQuery(
QueryBuilders.matchAllQuery(),
new Script["(ScriptType,String,String,Map)"](
Script.DEFAULT_SCRIPT_TYPE,
Script.DEFAULT_SCRIPT_LANG,
"cosineSimilarity(params.query_value, doc[params.field]) + 1.0 + _score",
params
)
);
var minusSixMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-6M")
.boost(1.5);
var minusTwelveMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-12M")
.boost(1.4);
var minusTwentyFourMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-24M")
.boost(1.3);
var minusSixYears = QueryBuilders.rangeQuery("metadata_date")
.gte("now-6y")
.boost(1.1);
var minutsTenYears = QueryBuilders.rangeQuery("metadata_date")
.gte("now-10y")
.boost(1);
var rescorerQueryBuilder = new QueryRescorerBuilder(
QueryBuilders.boolQuery()
.should(minusSixMonth)
.should(minusTwelveMonth)
.should(minusTwentyFourMonth)
.should(minusSixYears)
.should(minutsTenYears)
);
rescorerQueryBuilder.setQueryWeight(1);
rescorerQueryBuilder.windowSize(100);
rescorerQueryBuilder.setRescoreQueryWeight(1.7);
searchRequest.source().addRescorer(rescorerQueryBuilder);
searchRequest.source().query(scriptScoreQuery)
.size(+exchange.getAnnotations().get('document_retrieval_count'));
searchRequest;
}
function modifiedDSRequest(searchRequest) {
var QueryBuilders = Java.type('org.opensearch.index.query.QueryBuilders');
var QueryRescorerBuilder = Java.type('org.opensearch.search.rescore.QueryRescorerBuilder');

var minusSixMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-6M")
.boost(1.5);
var minusTwelveMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-12M")
.boost(1.4);
var minusTwentyFourMonth = QueryBuilders.rangeQuery("metadata_date")
.gte("now-24M")
.boost(1.3);
var minusSixYears = QueryBuilders.rangeQuery("metadata_date")
.gte("now-6y")
.boost(1.1);
var minutsTenYears = QueryBuilders.rangeQuery("metadata_date")
.gte("now-10y")
.boost(1);
var rescorerQueryBuilder = new QueryRescorerBuilder(
QueryBuilders.boolQuery()
.should(minusSixMonth)
.should(minusTwelveMonth)
.should(minusTwentyFourMonth)
.should(minusSixYears)
.should(minutsTenYears)
);
rescorerQueryBuilder.setQueryWeight(1);
rescorerQueryBuilder.windowSize(100);
rescorerQueryBuilder.setRescoreQueryWeight(1.7);

searchRequest.source().addRescorer(rescorerQueryBuilder);
searchRequest.source().query(QueryBuilders.matchAllQuery())
.size(+exchange.exchange.getAnnotations().get('document_retrieval_count'))
return searchRequest;

}
function getModifiedSearchRequest() {
if (typeof vsOpenSearchRequest !== 'undefined') {
return modifiedVSRequest(vsOpenSearchRequest);
}
if (typeof dsOpenSearchRequest !== 'undefined') {
return modifiedDSRequest(dsOpenSearchRequest);
}
}


getModifiedSearchRequest();