fast-elasticsearch-vector-scoring icon indicating copy to clipboard operation
fast-elasticsearch-vector-scoring copied to clipboard

Get the same results no matter how different the embedded vector

Open huanasilla opened this issue 4 years ago • 6 comments

I queried something like this:

curl -XGET "$HOST/sappearance/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "function_score": {
      "boost_mode": "replace",
      "boost": 1,
      "script_score": {
        "script": {
          "source": "binary_vector_score",
          "lang": "knn",
          "params": {
            "cosine": false,
            "field": "embedded",
            "encoded_vector":
"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"
          }
        }
      }
    }

And here is the sample results:

{
       "_index" : "sappearance",
       "_type" : "_doc",
       "_id" : "GYE1_3YB81_RQuAAxOtM",
       "_score" : 1.54172978,
       "_source" : {
         "_pid" : 1,
         "timestamp" : "2021-01-14T10:52:03.269931",
         "embedded" : "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",
         "camera_id" : 100
       }
     },
     {
       "_index" : "sappearance",
       "_type" : "_doc",
       "_id" : "NoE1_3YB81_RQuAAxes0",
       "_score" : 1.54172978,
       "_source" : {
         "_pid" : 1,
         "timestamp" : "2021-01-14T10:52:05.291303",
         "embedded" : "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",
         "camera_id" : 100
       }
     },
     {
       "_index" : "sappearance",
       "_type" : "_doc",
       "_id" : "G4E1_3YB81_RQuAAxOtb",
       "_score" : 1.54172978,
       "_source" : {
         "_pid" : 1,
         "timestamp" : "2021-01-14T10:52:03.269931",
         "embedded" : "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",
         "camera_id" : 100
       }
     }
   ]
Could you help me out? If I use the built-in dot product function there is no problem. 

huanasilla avatar Jan 14 '21 08:01 huanasilla

@lior-k I'm having the same problem.

KKbeom avatar Feb 15 '21 08:02 KKbeom

@lior-k Thanks for your work. However, I am going through the same problem. the plugin returns the same score no matter what the sentence is. It seems to follow that of the first document's score.

Is it a bug? or Is there any kinds of possibility that I made mistake?

joy-ko avatar Feb 25 '21 06:02 joy-ko

What is the ES version you guys use?

lior-k avatar Feb 26 '21 06:02 lior-k

@lior-k I used Elasticsearch version 7.9.3 and 7.9.0, then using your 'es-7.9.0' branch code. But, get same problem with both.

KKbeom avatar Feb 26 '21 06:02 KKbeom

Thank you @lior-k for your work. Do you have any updates from here? I got the same error

Mapping is

{
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        },
        "mappings": {
            "properties": {
                "vectorField": {
                    "type": "binary",
                    "doc_values": True
                  },
            }
        }
    }

Query to ask is

{
  "query": {
    "function_score": {
      "boost_mode": "replace",
      "script_score": {
        "script": {
	      "source": "binary_vector_score",
          "lang": "knn",
          "params": {
            "cosine": True,
            "field": "vectorField",
            "vector": list(np.random.rand(512))
          }
        }
      }
    }
  },
  "size": 10
}

The output result is

{'took': 2,
 'timed_out': False,
 '_shards': {'total': 1, 'successful': 1, 'skipped': 0, 'failed': 0},
 'hits': {'total': {'value': 10, 'relation': 'eq'},
  'max_score': 0.87545174,
  'hits': [{'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind0',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind1',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind2',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind3',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind4',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind5',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind6',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind7',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind8',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}},
   {'_index': 'here9201float',
    '_type': '_doc',
    '_id': 'ind9',
    '_score': 0.87545174,
    '_source': {'vectorField': 'encoded-values-here='}}]}}

I use the 7.9.0 ES version and cloned the corresponded branch. Hope you help me

PanchenkoYehor avatar Mar 05 '22 15:03 PanchenkoYehor

@lior-k
Thanks for your work! I have solved the above problem that appeared in branch 7.9.0 by debugging es locally.

Bug code in VectorScoreScript.java, line29~30:

final byte[] bytes = binaryEmbeddingReader.binaryValue().bytes;
final ByteArrayDataInput input = new ByteArrayDataInput(bytes);

The right code should be:

final BytesRef bytesRef = binaryEmbeddingReader.binaryValue();
final ByteArrayDataInput input = new ByteArrayDataInput(bytesRef.bytes, bytesRef.offset, bytesRef.length);

Please fix this bug.

Reference: Official usage of BytesRef in ElasticSearch, see AbstractBinaryDVLeafFieldData.java, line62~66:

final BytesRef bytes = values.binaryValue();
assert bytes.length > 0;
in.reset(bytes.bytes, bytes.offset, bytes.length);
count = in.readVInt();
scratch.bytes = bytes.bytes;

Snow-Dancing avatar Oct 11 '22 03:10 Snow-Dancing