From 8b9e02da9dad0a8103cf9adcef813f0f8862f523 Mon Sep 17 00:00:00 2001 From: cs0lar <62176855+cs0lar@users.noreply.github.com> Date: Sun, 16 Apr 2023 21:11:30 +0100 Subject: [PATCH] Fix/issue 1213 (#2932) ### Background Continuing to implement all the interface methods defined by the `VectorStore` class. This PR pertains to implementation of the `max_marginal_relevance_search` method. ### Changes - a `max_marginal_relevance_search` method implementation has been added in `weaviate.py` - tests have been added to the the new method - vcr cassettes have been added for the weaviate tests ### Test Plan Added tests for the `max_marginal_relevance_search` implementation ### Change Safety - [x] I have added tests to cover my changes --- langchain/vectorstores/weaviate.py | 57 +- ...te.test_max_marginal_relevance_search.yaml | 729 ++++++++++++++++++ ....test_similarity_search_with_metadata.yaml | 384 +++++++++ ...st_similarity_search_without_metadata.yaml | 385 +++++++++ .../vectorstores/docker-compose/weaviate.yml | 5 +- .../vectorstores/test_weaviate.py | 47 +- 6 files changed, 1599 insertions(+), 8 deletions(-) create mode 100644 tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml create mode 100644 tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml create mode 100644 tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml diff --git a/langchain/vectorstores/weaviate.py b/langchain/vectorstores/weaviate.py index d5d8c134..4211ec7e 100644 --- a/langchain/vectorstores/weaviate.py +++ b/langchain/vectorstores/weaviate.py @@ -4,10 +4,13 @@ from __future__ import annotations from typing import Any, Dict, Iterable, List, Optional, Type from uuid import uuid4 +import numpy as np + from langchain.docstore.document import Document from langchain.embeddings.base import Embeddings from langchain.utils import get_from_dict_or_env from langchain.vectorstores.base import VectorStore +from langchain.vectorstores.utils import maximal_marginal_relevance def _default_schema(index_name: str) -> Dict: @@ -42,6 +45,7 @@ class Weaviate(VectorStore): client: Any, index_name: str, text_key: str, + embedding: Optional[Embeddings] = None, attributes: Optional[List[str]] = None, ): """Initialize with Weaviate client.""" @@ -58,6 +62,7 @@ class Weaviate(VectorStore): ) self._client = client self._index_name = index_name + self._embedding = embedding self._text_key = text_key self._query_attrs = [self._text_key] if attributes is not None: @@ -129,6 +134,54 @@ class Weaviate(VectorStore): docs.append(Document(page_content=text, metadata=res)) return docs + def max_marginal_relevance_search( + self, query: str, k: int = 4, fetch_k: int = 20, **kwargs: Any + ) -> List[Document]: + """Return docs selected using the maximal marginal relevance. + + Maximal marginal relevance optimizes for similarity to query AND diversity + among selected documents. + + Args: + query: Text to look up documents similar to. + k: Number of Documents to return. Defaults to 4. + fetch_k: Number of Documents to fetch to pass to MMR algorithm. + + Returns: + List of Documents selected by maximal marginal relevance. + """ + lambda_mult = kwargs.get("lambda_mult", 0.5) + + if self._embedding is not None: + embedding = self._embedding.embed_query(query) + else: + raise ValueError( + "max_marginal_relevance_search requires a suitable Embeddings object" + ) + + vector = {"vector": embedding} + query_obj = self._client.query.get(self._index_name, self._query_attrs) + results = ( + query_obj.with_additional("vector") + .with_near_vector(vector) + .with_limit(fetch_k) + .do() + ) + + payload = results["data"]["Get"][self._index_name] + embeddings = [result["_additional"]["vector"] for result in payload] + mmr_selected = maximal_marginal_relevance( + np.array(embedding), embeddings, k=k, lambda_mult=lambda_mult + ) + + docs = [] + for idx in mmr_selected: + text = payload[idx].pop(self._text_key) + payload[idx].pop("_additional") + meta = payload[idx] + docs.append(Document(page_content=text, metadata=meta)) + return docs + @classmethod def from_texts( cls: Type[Weaviate], @@ -201,10 +254,10 @@ class Weaviate(VectorStore): "class_name": index_name, } if embeddings is not None: - params["vector"] = (embeddings[i],) + params["vector"] = embeddings[i] batch.add_data_object(**params) batch.flush() - return cls(client, index_name, text_key, attributes) + return cls(client, index_name, text_key, embedding, attributes) diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml new file mode 100644 index 00000000..dc54553a --- /dev/null +++ b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_max_marginal_relevance_search.yaml @@ -0,0 +1,729 @@ +interactions: +- request: + body: '{"input": [[8134], [2308], [43673]], "encoding_format": "base64"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '65' + Content-Type: + - application/json + User-Agent: + - User-Agent-DUMMY + X-OpenAI-Client-User-Agent: + - X-OpenAI-Client-User-Agent-DUMMY + authorization: + - authorization-DUMMY + method: POST + uri: https://api.openai.com/v1/engines/text-embedding-ada-002/embeddings + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7b8693d43ffd48b7-LHR + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Sat, 15 Apr 2023 19:25:58 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + openai-organization: + - user-iy0qn7phyookv8vra62ulvxe + openai-processing-ms: + - '264' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-ratelimit-limit-requests: + - '60' + x-ratelimit-remaining-requests: + - '57' + x-ratelimit-reset-requests: + - 2.38s + x-request-id: + - 607b159345ccf7869258f064154e9a57 + status: + code: 200 + message: OK +- request: + body: '{"input": [[8134]], "encoding_format": "base64"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '48' + Content-Type: + - application/json + User-Agent: + - User-Agent-DUMMY + X-OpenAI-Client-User-Agent: + - X-OpenAI-Client-User-Agent-DUMMY + authorization: + - authorization-DUMMY + method: POST + uri: https://api.openai.com/v1/engines/text-embedding-ada-002/embeddings + response: + body: + string: !!binary | + H4sIAAAAAAAAA1R6XQ+ySrPl/fsrdvat80ZEpMt9h4CIgN0Ifk4mE0BEQOTL7oY+Of99gs/JmZkb + E5DY0lW1aq1V/R//+uuvv+u4SJPv3//89fc7779//4/p3iP6Rn//89f//Ndff/3113/8Pv+/J9Mq + Th+P/JP9Hv99mX8e6fD3P39J/33n/z70z19/b4tRxarabbpl4Cwc9eakb2bxoUZCPhQJuP6HMz3Y + LlxeWYsSVRBt2SZerI1BDsBDnnFdUd50DzSYa8BQwCzGS9FaxVIa3qX63Uc98RZa547P+/yCtMSU + CPY6A/Fe2aZwOY0527z1j9E8r+kMEXctsz1HsUubwylRXw+aEydKpHhaD8Prq4ZULpIsHlassUB8 + b5wYuD6iEb8uJzST85xt5PXK6PnhWoIdeiUxlsUmHg68DcDV4jldobEoyt2r8FB04Bv2XHQmYq7k + KSgPNybZ6wPqGPrudDjNA4Ir4yDcrtttErRWoxMx20slejcwLcTq+s0cM62M8X5uczSnmxUx3rsd + 4tEez9T8muzJjn2ckO9gBei52ejMQccuHOPLvQTDnlk061ZZ3F+J2kPTiCMdCQvRsKdnC861tMXi + eeUhO+tcQuEia5jeHit32GubBHRn7hLDOx8MioVTQ9HeDHLpPrErTH0LgKrVjniXuRYynR4BRff8 + S8z5dhvLXr2y4VA9SqZ/onUodmf/BsvLzWfR/ntG4tDdM1Sdo5pZwjx0/Hp/OOhVUo2qlrsxZG1G + bis4KTo5vmsfiax8VbC1NUyucNkb46sP6FowcWXWvW+M+mr5PhwfZoLrw/ZT0BgTCpIZYUKCzCvG + oOgySOZlwDbmwTdGbUYi9algn3mjl3a9nNs2Gp3jlhmVpAvJ2aklJOz2IlG5OIqRiBWFd5BQYhoU + XDHT7hlKNp8b04NuhsR70Hwox2BNDnmpddxntQ7zPJnj3BSNwcMx7X/rE++BurDyDm0EoIUeLR9t + 2Y1HKeMgSvygTCpF0bd7Z0ThvvLIQR6XhTj4+ghWHjKqzIklRnXcJDC/9CFx5qddN24DG2CRhDvi + FtumGPb7TgGFzLYUPc5j3K9KWYKI5y7RKynsxpt71+AaHq9E559dOOjN3YNCcBvPGErd8a04p5X1 + ZBdmr/NO9OalrWG6xitmvWJ+oBsFzKX0IM5U34wHKxOJet5ReV+cQn482yfAZesTQqXEpRcWOnPW + GR4zUx+HvOqqEfpvqxHXroQQwZJ70LHnidYAuSteyiNHQV4y2jcZhAMDF9AMHTkFKdrE4yuiERzk + 7oz9Y+R0wyFdz6A5yBLRyxdF9Y7ICmzbqsLztHq7dRu8PVicnzGV733jtvUHHFid0xsWn8gryur2 + Utdnvu+Ju7sWYoyRPsK2Xx9IfJkfDYEWNxWOm2VHzHPpGUM1F8naHLSBmUt974qPIAoU/djSlqM2 + Zvq+5kiVnBnZX1Q/HOtVncCRPA1m6nldMCmtKdrP8xyvLier4Cu5s9FWPgds0x4vYnzmewz5+d6R + 3dKLwzHZni7oY7AeL4pkcKd8zqGdb0d6PmjXQtzGvFrfnOSNf/vz3d5dDVW67ONZfW+K7z728Vom + hk+lKmwL8XI2ypoOzyuxaWbHvBiDHH54YsdpKXprzBJI/SZj9mG7K+jTUhOY8IiG3GIuvxKVImrY + ISFRUaNxK482MEW6kDPe2Whki70KRX1+M7vkR4OvtG0LhfK6kH2vpKJJVsd03cnJyLbyy0fDIx04 + LHRk0LEuXWNcfmwFpnhg5X1RxfAd1AQuuuew+3oTdpyrQYsk84apMBW1o+HelX7X7HrKW8Fwb5eg + mN8TZlP8x/N7X0PQRDH74Ss764qMjlX6onl7tAzxeuARRfTRM5KEWcyTtznCycsshp/fj/vbj/Uz + Gb7MOTp1KFoCMsqQ7ZDDt9iJsuoqDtpykbGds//GgjsfD10H64VHqS06IVb2DU39hO3jQo4Hqzjl + qryJFboKjm04qpeRgq3iDV4vqtJoPCYw2t3TNbHnxEJSu7xEQIS7ZeasXKOPe5Nt1DceIju20Qr5 + dkIpFEV1Jc5Yv8OmXtoWrItoiVX6boxffgA6nRh7GmljjMnVbsEo1YJ+Xvhr/ImfauMXXgKMaHjU + iYeC5haTDdlHot7nkQ9K3A+0ksJHJ3gwWCpVm5a4j/MYslujOYCyXUzsl2S5i1Cam2g1kxMs4Xrj + jrPFx0ONmx7IYbmyBW9mKw9JDx4w93XDBb9KhQLpfSGIt6gkIR7Hp4PsEJfkYJ1FTK0kSOBQZzo7 + kjYPe+f40AGWSUQC/vmE3Ct4hOLW1Fi4kKuYYnxPIZ7rc+I+9UMollDZELnfAq+OXdYNB3ewgL2k + FdmuHzEaNSI4iufanFhjagih0zugwt5LVMGjXiyicPDgJmkxlWVN6Zpzb/Qgdas3sexrJrjh3R2U + a2lP+yPZG4O8fEfodVFkElrvc9c3ka2jvpJOJGk3hpBTyFSIgu8Gr0quxU3vRR641zih6aVYdfWG + hz6yr+uRLvhw71o26y/Q7qoYS5v4GoputsyhPqo3ejTKRgxih2qIt0+HbPF3LIRUGzbUsdXhRZfv + uzGINibEyiHE6+XKRkOktBFkx/I89edH/FboqK9P68OARdBhg4eHb4Ye39WFOMwdURfdHEV13ZZT + 6f3VBG/smKL7t/KZtckUdzzvVQWGs3PGUrjk6CtTHZBHeczuu6Bw2YSPaJnbQCzjIIw6dRMbNl5y + IS5t1Y7t1E0JlS75xLMrw+Ccc4w0CN4Mp5rnDvsQX8ATLGZ6kgYdP2WaClQJDWI5+5lRSaGcorpM + OfOoqblc7toSKafVltgfYyGmfqXCKvFNvN5YRUf7tYVRtfukVDl9kpi7dlPDYWUADircIFFvuwv6 + 2PbAdsN1IwQp33x9zI2EuA+UGN/LfF6DXGmUOGyAjs7y/PLrt8wruryj1sagsHyWBTHvnzoehyj3 + UB4aJrNdtBI8kQcLHl3OsDo7yLFYRysPJv7zw9uOrz+mDtL9eiDk6WExLlzDUqf3o+IT9d1vf9ej + kBGeXc2XO0C9uKBZt51jJfuexLjniwSG9FQzXXMKY1Se1EJ1bu3xMke1MaoXtVdHtf0Qi8afYpzb + Tr0iy8phe8sdxIRXEZQPx2MbzRGC3/2GAxH7Lfv1P97Oax8eN7gyrAdWzDbL7UVtRaYQ4otj8Yd/ + 3xTR4A/3/W6Y4XMLdW7u2dPj55BLlvOnn1F2vKN46n/O7/fozOsKJE6rpYTyxSfBneo08TjKmQYW + Qzs6Pyytgs+Hcwbm1jrhBf4G3bh9HySY+C8xcf0y6GneXGA2bh94tsVDzNePVwX4srCIZ29RV788 + NYBbRY50ceEUFdk+koAk+w8xgq0ZjndDxmBFYLP96eN2U7xM0ALlhWcZLF2mkH2F3H2wxyI8LpEQ + K+0GYj63Kb2aG4OfMluBeaWY5LDYJgXPOETIxyvOHGVmFQvn3VD0w+tNNxtEd5AQoOx71oh3fTsG + d2a+uf71V8/U57FoXy8HPuvwxcjNNw15z9cJLPz+wOz+YBSj66ETKEGeMptZo8tIbJyAbRr7D98Y + zr1BV+LhzdkOfXUkRbKuQxDcZkwzyqgYqRTJ8GoemGkLt++Gg+r16P3eWHixT3M0WAtb/vERlqg8 + D7vIulQoXK78ib9UxbiNuwj016whu1PuoFFFhYJ+9bCtVkXH/dMxgI0qIqqo23vIj/XBQ4rJToSo + 6qn4BlspQgcrFPi7shXRrD5XD6KrY7Gd2M/dFo08X5+U9FdPdihXn4MJibGe08+0Hr2dRArK3r6T + h5ITdwitLkXqd58xY73SO1Ge9ak/lldm673jjpeTd4NpPboijwf6Nuzrqx8MD+K6UWbwu31VUb4l + KiHf2u4GY721USZ/txSYL7r+IkBGRIuA/fCg84+1gpa3cYlXXsnCP3x4XG8wM2sjN77jzitRJl1S + YtpKg5g68wK4DuaLrul+6Liv9zPItweV4YIX8fD2+bie+AWF69txhakUKUTpEWGVDclPrzhQiNEm + G38VhL96AdhZClUmfBERzpL1T/+tmdx3Y2oZt5++xmtTxx1ltiUBBWoTHG5K8bXs7fjbD4yOfBPy + FzqocL7VJ/ZUPkxwqUUZrFuvINuL83Y5VsIb4FP6ZPsZpQVfxUmEbmuPss3n7KJxrzcyaq/cYwcE + W0Me9/0MmJ1KxGuyJOSfmeNAKJw/ejXuzl4YAOpOHiEUj/GoHnx//bqoMh41xzDG+Aka8gW90cUm + tjqpfD0C5OGyJc7Hlgv+2w+jVAqmlQl2v51b2GAEFxerZ4HjMX1FDirmZ515j/OrGz8nDcPyuHYx + 1zrP4NLrbsGQXmra+Y3vCpNtdHj75o6Z728m6KmMSmDIW//0ZPe9b86SqgXqixiP9hwORecn8MN3 + Ih9xwY9py2H3UHQWWFlp8E//kGFWgEOHukSIf+7+DBqzfjHD7Sv0w3/VPAfbKV/zrpatVQSLu5pR + +QpDwavcPIG9l55Tv70ZAkWOjezz22U//i5X/JPDtN9kI2Iz5trmVqF2V8aUh7ttN0raqkRk/yYT + X46K8fLmPZyficZucVqiEV1fI4r2FyD23dXcRb5VMHyvxZztd0FhMPel6UiXVzVGyoPG7Y/f1zdq + 0uWw7opvk9QRpHxxJPaoP9x+9+owrCJSYZpdvjG/+68RfvxMU6Mk7I7vREJhMDtiubd1tFRyK0Vq + MT8Q/ZAwd0i8NILJP6Kq8ngaYzNuaxirzfCLd/fdh/gE/aUu2KQ/xDBDNwq3tr38qTfelvfsx9+J + d1yMiL3C/gLa+WgzO4+YEIvrQUGy1zbUCR8HYyjupQNWs4vZfn5S4vHu2SZ8tqNDPPlrGX0fJj4s + IFWY0yvY6IHNb+jM3Z6um6zrxKd5pxB8zmu2ey/D/9IbVYJPePnCB1eQuZQBvpMv05L7IARftgG6 + LpaM2RMeCho4Ggzhdsm8AExXvML+pNIderHdFTLErzPrBCdmpczZ7zx33AbaDMDsj4SY35U7rrKz + g35+Qrv/LtBPH8H48gtyqhsXjYt0N4OPU9ym39MEv0qdinZBc2QbT5bdIRMJV6XHGNAZ3WfoW8lH + DSL95TP3qX/jcf/g1U8/T/xzGbfKk5rQ3zcOyUV2/i9/zFczk6RJeDS4BY6Kbqq0I5EbcdEFm4ii + cF96VC47Hncnfr7Bjy9nu83B6KNI+DBDIaeLIdi4i+LeO6DLqGZa673jMfhuAVp829HhqdzjMTbf + Aaw8MyQ3cutD9rg3OiTE4+zHB8dhHt6gMG4V22n3izumUKtwPTczurwsSDe8i0WNnm1s0R9fZWmh + Zr/8oYMny0ZTlSWFoBt0ulp/HrE4f1odHUprTX7x4WW7pHA/YY+OoVeFw/T8+tfvzUlf80RemdBo + JMF/6qOOVyeIW0uj2e5zQd9FzKrVKglMooeeFcrwQgG6NN8X2c7Krzt01aDCV/PuzPCQjOh8ltlo + 8isZZmjmUokdMIz94kF2xiEPOX8aKtBtrjLC0DcU377pf3yK7Kb1x6efqOhilgPbD0ne8eNZu0Ab + 2YK5bqS50/o+sIt5IBN/LcS6DNs//I9c90H3i+dPTzCnyj00bqz7CU5ebtFZkK3D8aPHKppn1o1o + srLrZLJOHNhp1opovpSJsR4u1Q/PsOpIO7c3BucE587r2aHgJ7c8maODJr9o4pNVyNLAwmDuEkR+ + +kFM+gNFozri+MhfoSjdTEfPISqJpxIV9f3bLqHwyhVzL/dPPO7PFQUpu3S/ejF6CG8W4ndt99OP + MXs5GxWtokNFdi881X93+8MP8LjrlwUrV6hVmXQ/MuIfdmLQsZPCwekV4q2MT5z/8lF+vRu8/JTU + 7R8bp4ZbIbcMy2OFhv5Tz+A4kgOdJ6EW/vGX8f3wnd5X+vE7C5qrt2LWp5yhQTMUUH/43Lwvjitt + 3NZCqbopiaM85m45oj0F01W1P/1NmfzS1da5LYjh3/bxMG/jBHh2pvTNXSaE+JxMdKF2xfCluBfD + 81lLwJxljOWy82M5fko6ynf+DcvYU+NmFzUOxFDfiOW074L98uf21dfEXOqNO6weEl9p+NgyLzt6 + Rb/fGRmsRVmTXVYXIf/0Z+mP35ZP/tv0PjMo861HyORn/vw25IIW0HiuZgUv8S1CDS9nbMuHVSFi + ye5Vub6fSZTsSdeb2cFE7BsLLGnEEHytKCc45/qd7DbZLhQ7dVMBMeUN5StsowHUV4ve9HCncnXr + wqlfVyg7Vmc21ZPBreuRInS6MCyNd8PgsOlGiFxWUP7IDIPb/neG4oXcT3qzd/nzoaU/P5s59ksP + 2boMaziG6p4Z98/K4MuSjLARazrxlSCsV+VMhgk/CV50i46WX0WG9fbzpeN2nhRSvJ/pEOo8+4P/ + LckPN2CbzsaR2r0KOvnL6MzmKnOPZCXYo3BTdFtj+tNv7lD4G6o+hXAJaYenGHtRcJj8RdyyISmm + 9SVQVWiJGTgLJCIAEwJfu5JLNTu7DC18BV4f60O2NV2HIi3GHCZ+y4xl8Qr7aN4n0C5WT4w6+y3o + xjqeYDO8d+TXz8TnUpdA5xbDy/ugFkOeP3O0fun+T28bbAhrB6Z8xTN2lmJ5mc51SMHU/9SfFO2t + GTy36e6HVzF9dl0NBXOPzD1Z+c+fz9F3f+vZvdBsxJfR+6JO+UprPObFQC56CeH5orCDhR4ud2Oa + weQHE40u3JDWQ1qhWVRt2WFlK2isPltTFdXHZO7EZ6XHiWRQrpdLzD3/YVBFBRl28bL841ct3+bW + g7V3v2P0QInLf/V3adiLOPtd7w7K49Cjhlcz+omUDjWWfRgha2f3if8t4iFZ3VPQb1VJtvtUF+PF + aWZQPx4BS1QSoSFovxV8wVlM/qEdSixNZPQUg0tVyNA0H7lF6BFfZgT7NPvz/5BCYMu89vMtJn9Z + RfJWWjPXb7gr4t2hRhP+Er1xJNRcNTqiqT7JQXoGiKvvtwLPlycoOgcXg59wUkGMmwf7zXPGMSQR + sG7jUdE4pcvnXnkBspoNzDpoleDFoTlBfK4R2SyGd8H3eeDDhLdsk8xb8Z3mcxCmL5cYpXbpBscJ + Zn/8pfYht12qz+QUFqp1pPn2PoreHFYRcvnwYvvsW7ryorpLsG9X/TQvkMImb5sbcrX7nPzmRcxW + eYv28omwnSE8Q0jGcQYT/8dStTrF9HOyMZr0ODOS9IVGiR082LKzREgGVSgccZbgWetPPGxV1xj8 + UbutJ3zFwjAyNEzxQ+uX5jPnY1+67senh93VZdhCXjg47xdddwZtqHyo/IL7p7sP1jfP2H7KTzrv + hYT8+TGg/VlhxlA7Bx3uj9uT+bHzEj/+DbtlsCNkf3ka/LkZKILUOrMdzVaGuGUz/6cPf3zC+MPX + m5l3YW71mcVU65wcMpltiem6tKC57VdgqsRkGM/qYmBgAKzPQ8q8SY+zyY+FJ24jCpa/QTx83iW0 + UW6C/PyAscNGvh7i2YY4lvsyRustKYjoQ0Gs9/gqpnhfYJcvdfz5lNgdUI19WPj0MOlDU+RexgLA + X7kgm4rlhuj8TvnNW/BcPtKOmfp2Bk5gIbJ9e3a3IM0ugcmvwpKe28XQJPXtx18nPzFA42w9WKDN + Oo/YaDyFI2qrWo2PB5nt15uw4I/TLkNrTXoyL8y/op/6xZ/9dzhyYiE+iQm3+fv8m2cVkx/XImEP + KnGKaoP+8C/v6Bq0ziOCRJffMKjDeCWu6jSh2B1wBrP1BZODcyMdL8Yog/XgbYgz+XF0z9cpHFGc + 4ddmSRELWHVZTfXzZ569GG+KCpM//Ud/dMdYvf36A9Hv+afjm0qR1lP/pT//hJ+a4gTz+Pn6zaOM + 0e8vCmRVcaISjFknhodTgXK/OET35Hc83Kmv/OHnRnw6uTytWhXsvfxku1lzEEJfQoTWjjZitahe + QujJt1bPbK0SI/WfxlccLxZc/PODbV/7PuRuYJqw3rUupT7N3OGcNz6aVZcBPxZV6f6pr998WU/d + bzfljww+KB1dTfPq7rGTeliElvTzh4rhnpQl+vGrjT7TDO6vnOSnN5ibjaYYOAgd/v6dCvjPf/31 + 1//6nTCo6kf6ng4GfNPh++//Pirw7+gR/VuS5H8z+c9JBNpHWfr3P/91COHvpqur5vu/v3WZfvq/ + //lr8ee0wd/f+hu9/5/b/5rW+s9//R8AAAD//wMACEOkc+EgAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7b8693db192148b7-LHR + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Sat, 15 Apr 2023 19:25:59 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + openai-organization: + - user-iy0qn7phyookv8vra62ulvxe + openai-processing-ms: + - '128' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-ratelimit-limit-requests: + - '60' + x-ratelimit-remaining-requests: + - '56' + x-ratelimit-reset-requests: + - 3.292s + x-request-id: + - e7a292440e79bd667f0e689db47a9ab6 + status: + code: 200 + message: OK +- request: + body: '{"input": [[8134]], "encoding_format": "base64"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '48' + Content-Type: + - application/json + User-Agent: + - User-Agent-DUMMY + X-OpenAI-Client-User-Agent: + - X-OpenAI-Client-User-Agent-DUMMY + authorization: + - authorization-DUMMY + method: POST + uri: https://api.openai.com/v1/engines/text-embedding-ada-002/embeddings + response: + body: + string: !!binary | + H4sIAAAAAAAAA1RWS9OyvLac71/x1DvlVImIJH4zBORugoKoZ8RFEVDuCST7z5/yeavOrj3JYGVV + JbW6V3f/+18/P3/atHpk059/fv68y3H68z/fWp5MyZ9/fv73Xz8/Pz///j3/q/PxSR95XjbFb/vv + Zdnkj+XPPz/i/1f+0/TPz58hZADNu3w/bMI+FpQ5O9fUWwctmIlcZRAF1kJNi4rDfEcHERRrcqDm + aO3Cubz7NtCdSiIbj+aA982IoPNEOZJ1Ylbr8HyIlFmQRqynYw/YM8YuGORMxHvT1AcWJ5cS9r5Z + 0sPhUoSDtBEkIDfvNVWfIPXGVjN9xfK1F/59f3k0mQuvthAR8BiLgb2ErQYvu2zGlmKfwLJ5xS3w + I6GkLo23fArItYZzFtRYC8f9sDzl5AwnZdao0yZd2DSh7oPHxtdo3qg6IJt8lEGl7Q4Yp0+Q0u88 + oGoSjIrNZU572hYy0OAjxGg23pwCErlgXMSG+pfkzXmyKAlQpYuC9QxZKfMg/SiJKroYY9fV+fqQ + 2ICfc5Ui0RsqJo/bGt42jysZhOiVUmXsR7hGmxNZkWuULvljbcI4FA0kTcasjzV7RcC8Ri21CvPj + LVW+ZBD4Tw97OT1ysnokI+w6Q8eXE049FllvCJPn28QHwVnx9hZqKrhbCsGoDA7p5tU7NpTAsfqL + 52LZRQTdtg7o5WhfUj7unQxEYd9Q1yqOA8vcIwLLBalEAv5el0jhiNtAbzUcPnkwMHlcPjBMIcKB + fHd03r0Z270/zY2ay2cM+ygvAvhWbhX61FEbjvr92UMxL31sLh8/nPMFFFCDWUiNOAn0ZdivYqUy + WUD10/AcxtfDjsD2uLOptzi6LoF90kI/giV+hM+zvrDTVoJ5V0/42J/gsPjNXQSCwW/UGq7CwPR4 + jmCzjXfYQEQFbNxcFchWWYGqq97yRT8iEQbyfMbWXRD5+5cvMA4v5FNL9cCMlyrCsjSvZJILXo2v + a0KAvEIe9qi9qZgeaASG5rMju6i3wjm2lwJebRhhp1ksbwadDeF+SS3s2lqvM9HxZPg4lw5Ryg/z + Jv1oitA3Sg9b8y4clsDfqjAo1zE+qCeLc+m49eE+1Tkq4/ThsVBq5i25r2KqHfKe0w3uW1jJ1gVt + q/6VMlLsRTi0ao7tOlG90Vu2PtAFTInsv6OQR7Z8g277CbD5gQ9AzzR0VweS+vRQqChkSveR4K3R + VOzeU855MMwBfBlPjVQdeAH2iHICbpW/Jh//CasFXgEEAT9Nv/zwlsNTSCCh8hnVmeUC/somBaoH + bf3Fe0z7rpRkeB8/Ddr6rB066fn2obV6XsnGsZq0N07QhW9YRmj9vPp6HUl7ZdcmxwE7klXx5W6X + Pbwr2yM+O3VQfecrwE3OB+x9FF9fepMXu6NrMKofsD3w5kAhNMxzTgY/78B0pLIMNqK7wsiVAp1l + 1zaDxxXWKI4ubUU6eYtAapclWuWFyZfwpkDQaK+QOkMeh3Mmdy7c5MuAdeOeVuwSHDSwHJsO8alZ + PBah9AMP48TI5bJcQ9YrZb9rWvmD5MDdgb52gQr2a3RGErPbarTzAO3uJo6IpCx9tby8vbxLDXrF + /m6wB/aoygSaoHYxzosPp5NTFFC5dC96SAMzJNxKMngasU3s5EwAm649A0l4O+PDNLVgcaMygKM/ + xjjqzo63BMZdgKx71dTX1KBiND30MBJfF4xRlOu9iJdyJw4io/rUnDx+cV8ilG7YIEJUuXwWqT3D + 0TouaPM4KNU81G4GL9R26fXLX1ZMTAHf/5JtPgNAvnwHK3w70mt9HDhBk1zDxzLliN42NVhi0alh + X7CMaoR99IknNwUMiotI79dmyC87VILafo1U1Y6Fx8u3IcAXhCY1WN6kJLsW2a6/TYRi89Xqc+dO + Z3AQIwfbTX3mDdlJLUyb05P6QTylbM42BrD4uUJrkFQp95Hsg40UzNTZniTAh1k/K7gDClHuUh8u + 3oMxmK8EFe1GrwwHwSklANAHYm9uTCCmtziGEU4NitBuDT57Yt7API4A7z+BWol9OiQwJGWM9/mh + DDuQyS7Mjj1DYB20fLkMZQkPrKU0s4xOX3aN3cOauyXpBWvS+X7RArjFfYlEZWBgeRlZALZ1lOHj + Jkt4N69cHwrGZU+qh5SDRUtKU/nlp9FuWEX0eI5heGsSbBWm6UlH/PTBPijvaKtqKpjFZCMDZSII + OwpyquV8dQpwz+yA4luGQlZpIYRPzRF//biasSwIv/PDzkUVvemXX+Zd1egJn158zPkoQI/dEpxH + fROy6LJHYE3pitqnsvHG2N6W8Hf/TJsfQ97FHwOuyPuFWD8U6QKikwmDjSFjJ59TMOcLL8BliFbY + OnZ6xW9NJ//mBbLbrbRKeqeL/at3ZJ0k23SQLL2GvFg+2FCVouLX/J4AEBBC6u7s6MuqWivg3mcS + Pj+f8TDpQ4sAbewIf/MAXz+kQoLfewTHuzG0yEwCaA14TS7WTgLD866rYOufCOHcLLwetzCBSHYf + SIm212reTM0DrquXR87Q6MNl1Q8FfMvU+YsH25JKhW3htkhKHQdwzzzZMG+2IZKOF2dYPix5wPxu + x9TSVrHXLO1Z2y1sUhDkwpF/+R0A2XjHGG9KNvSP1IsUuvkMZH111Ipp1tAD01RO1AkeGzCHUy/C + c3O+IP7k80CygIlf1qb0chTKdDJfVAQ3VABstuqm6ptnpkJJqK8YgY0y0M1tP0JQwwD/+i/r9kEM + pPHxoeZJ8AZ2FoUY5sozpb7ZnYelDAsBZozr3/mr1RBc1gLYF8JM/Uuoemw8JgFwo+WAnXsn6fNX + 3+HdqW20lawKkMh6C0Bqh5Twep+lXARODdvCblFJgg4sx847g30BZ+pZ057PfbSed6p+TbHRZpk+ + dRSP8G7JBHuvdOeRxCxj6CBmUo1HZUrfatjD0ySX2J7cBsz3/FyA0Pb0v/mRSeXLhMNFGZFA3tIw + f/0Tuj3ZU9MYrYGfPqIJv36JPXPG+py8l48SSYiSJesHMI7kDHeOKwAkH9NXyl3yjkETrLdo93pF + fEabQwFZMjfUuF5LvrTT4wykmTho9atfxrbPFLBOGux5YlMx6GzHbaJKLkXhk+nMDeQSzp50pN/9 + 0xfbvc9wxdYG3We99/VrOYDadU6ocV6bw7QVTaSsQ0PEVhudqr/5+zBShsr0FoC5StYfiB/QppcH + vFTsUCpn8PVTUhl3MMzVa0AwjoKUKEJZDcvcWTL4zSNdm3Qpp1lg/OZRsuxrK5xh+h7h6iTEaNeP + oTeTZSfCT37Xvvmr4ON52CawXl1iJDJtBou8f5VQuh0N7MtkDb56huC2qE6EPT9ZmEzXfoYUHz7Y + rCWjmsNH7P7Vf//+8oa/+6PuYIB4pUgpFYHzATctttAMD3LKVm81gtgEKelO0l7nKr2JUBjFAz7Y + RsY5McYYfP2M4nA0Q2n12TJQdfHtiy/Vv3nEBt1mrWKVI7daVFTYO6EfI+zL4Srl0nFB8MzBi+qk + 1vk69Y8FtErRp65Q6hWzN2kAy2OSU8+7Lx41DlUE1UvuU6SZbbj0sY02zwNcUdsIdG9tbkoXPh7j + jh6vYqJz85YocFPuEXXsYEyZqI4imOq1if4PAAD//0yaS8+CwJa15+dXnJwpOVEQqU3PUO4gVSpe + IPnyBQQRFJVLFVBJ//cOviednjpQ3FStvdazN984JeKgfiRALGvYUb4X/OPYZwXB5XDGIG7rijtl + m8DWbL7E6JHv/+mp0Ekmw21atQPB4wV4ia5UKsVY5z0EOxSqYUhm/dG7HIwtmvUPl99wpX9jZJ/g + MHkms2a/R739UKqZvX0RW6mcUIr7wIBZr2jR6LuU7RZVDtTfxSTLEuJPioxKdIDvnXmBtW0HY13m + gLT9lWlh7aJJCm8RLJU3o8A2qd+PCtaU0F1mJEjRnU+qYEtonJhC3N3ktFNwMZZIAlmlqlzwttuc + YUKi2AALosul+pbhB9BtqSzxQjaY3qNTbKC9dsBMq/OS06HqOqQh6U62+PP1u2+4u4B6OJV04Vlj + O77bToKT/1oz4+VX6eC+C6p2vNjQMdq4iD+qsASuUx2P/efud/HT8SB2a4f47ebAB62KNMChAnQ0 + qBKOhbu/qWk3GVTpwg7x3aK6obmeGNbuLmX+cBkgS4822W4uL53um5cEyOMjnkx5E/L9WRXgBcWJ + JTuX8cHGfgHLHqo5373S8VTpNxhlfGcBqWk1rO0dReVUUKbN72Oqa7dB4mnAzL07pi6tsk6Bdz2J + ZKsLaTV438T7/R9GeNqhpjU4BiOKMLH1x5ROc55TFfuCsBJY22qqtimg9rPNqOAfrFbaSH2Ouszp + iSG5UjXWa8cCrN9eDJNolzJ8DA0I/GmHhYeI0WitGg81C3PD9Mh+tCPl2hH828bCsnLz+V/eJx6t + aQn+3ufGbi/A4mnYDNfTo+obkjzBWO+BbOC4a3vrc74pNJseJJj1lgv7/e3Xj+Z64Gosts3yjwcc + o3PFp33TS/BZRh5Vah+1vJEGBQiL7sw9qzUaeRLJinMtTaZD9Ezb2U+ATrYpHafXOOvH8wSGtc+Y + s9MjfSqkGNDc/9mGa0661ONrA4fs5pNg5g3j2nNqlLVdTpffpZn+9Bvx/ZlQ6dwknJ9DTQaJOhrb + M/uJphgOE6onC4jlDpq/2mEZg8tv2q9/h/1DJKVyr8UeT9O6Rd+H7yrwshODSprXhvR2/eQgfw+E + aIsqRbQ1EAZe8BqXqdL702F7aACE05ZtCyfiH6bcZHSTaoxRdd62P3+LYgUFxOhjijjWcQLz+6cg + h/dwLC2zg+NjHIindlJLj0vhBBWSizl/fappYzgTZLF3Ye6YP/jQdt8CxPXNJoZm8Lbfq90RnmPm + MOxJgz7ZmWAg6WtO1JCegT6ekmcCn+56Y+5gye0UVB8DwG1csgkju+pqabeD/cqSmdvKO96LmBm/ + PEZVNrTtkBZiAvwRqMx07mE6HbbxB/YnK8aistghvmlOH1jvQsp0Yznp3G29HL1WOmMBvONw8o9f + gCg7yEzLQqPlwsYfFH24PpjfFQ9/qlC9//Evpmv9Lp3Yp1B+/Yi4qiKjSetOAsKkjWmlHUU0NuRY + w5p8SpLaRz8d3oG8hePhGjN8EjbheNynCmLi+sA0dJP8IXz5g6JWeUiH/aZo+zIs4K8fOOOhbydZ + 3DdQ3vwEC9d6hZrbhjrgyKJH2DU6tz9/jV52ZJBrUhx0/nIUivC7s8klpzz8/HgGDU4eldcKaz+W + ap7AHaea9qcx0Fk76HtIzz6lizje+NIvn5ee/mVO0r9SrmQXDWY9oWs/jFOuL18eqNUtJHFidFX3 + y+f6/TaxzVETQv7Swg+Et+jF7D2/tPwcOgok6Yiokql7n0vaGdBzvDsUss+Ysp3jPeFuNzFdcE0K + m6F6UliRzKTDFGXtEIXeFvXbo0CcsTN+fGT68Q0q3dta56Z9mlT59tGJvdg14ahXrvOfes08jqn2 + OoLkVeq0C9GlpVtTwetZn8kvX4uD1HqIVWNBnCrr/QEVDwXOvRb/5b3uVJDnj1cy7K7VtJOWmQXF + EBTEC6yy4vd9JQB75Qqzkndf8VXkduDp8pVssNSGY+N0AmrGHWeu05Zo9F9FAjMvZb/7LgZffw9K + 32FiFUFZcWGjTxDwLWb4ER5b7omJAIbhdeynf2OVrW+wDhWTqmauVlx5+s2fn9leuZ2KP5463xfi + JYeCDyi0GigeeYVXH+b4fXVOIhiEZcecg71v30jcTGiuJzNBf1XMci0M+qQhkhNeouG1TAakT1uE + T7fyEfJshanyUpKKOPEZfOaB84SlECmMsNPb52fVKkFovZbZ0man99bjLaFZD1ikrMq0HxZbjHbS + 4U3sTgr4WLhR/ssjWIB4pfejhqiSfuM906LRCWf+kENlGhLxrbNcldGz1gCNr9ucl3pEI650QIdL + w9z3+PZn/ydB0NsHOt1Wms7jAo7w4wtbc7sMh7OtWZA8Opl5oSigQV+tNUXYft/0qd09f7UZvSPS + XuuKzPw0fZb39QSOuFmwHRcCJG/yVFq/60Ek/vvmpNND9iNw416mbRkxPgTiyUA53tdz3oj5lBiy + DGh837Bqpft0eWKnI2LbW4p//egrjLEH32+REI0PNe+NPv6Adq1Vgh/06w+d6DzXMx+bz1dQ0RMO + n2AWxptYC7HS+VSdl3BIpxGzZk/bQUtkAXrNDYhTooH/eBtSX0+D6l740Mfw/qmRORQC2/SPdfjj + kUoSZGdyO2Wh3zkEAJ2KkOPRsvRqipTPCWaeQLDc23yMDxsKV/m1oPDjV5/h6KFMyVI6rFZdxfjU + lD+ePut1xweVH3K0P5XD3/cNc/3gllcFHeVen58/k1C9E1pmmE7nz/4pR6Eg9MzuD0bYTefqCeUT + O7Ner0Ne+GyCuR+S3drdha0/5BNQphyJ22ZS2i2ZM8GPh4qz/1+dJmELljEUbJtGA/+qcR9B9FQI + Ts+PMqSN7k4o7+8KM5NkHfb6LS1Rf0rYzKMrf/K9raKEDfPJ9rYq9LFQ9A6CW6PgWuyP+scWhAGO + q64jm8VKRFMLNwPeSLuS2N6FbaevRg3MwnoTeyhV/c8Pz/yJBfvqUdHQhAJOZfzEo+zXnEnBuINP + ujaJNyTHdrgeoieIWtlhAa2Uapj5+o/nMC85aJzxdeTBWB4qvHK8ZSuKmP3NF/7u3+o5WgrgN7WJ + /5tHhOv2A26aHhnZJmXIMyvNUXuWOxbPfpsbgtgocz6gT7Mqq1GzpwKgKVfMf6SZP8VUKP78QMAG + v+pQiBvUXmuLYY7ldnwldaeY/spg3tPchMtVz25QLvw1Xt0Xhd4ll04BU1hVxFHOli8h5Qlw/n5f + WI7PN583NJaQ8L4WRNf6Lh2akzogMbSW9Gu/G791UnX6O4+6shZ9nipxDoqlPIn5rXV9mlRXgShX + jyw04rQdtCCjICUXkRlu44QSUjoBgaJiukjvKBxjEh1RnlOVENPNOT3wnYLyY+Eyn6A+nPmygH55 + zTBqhob3Sv2gXz0dPRz871xvhJdjQzTzGvpjo5kyfN/Rl67j70Wf1OBWw9V8FcxUFjvOy/x++fkh + KqzJ0+dxsTyCrJYjsxZhzXmoxSdobsWaGN/lKxyvwtGAR0SfLJBRo/e7otvBkLw8Yjj9uR0ktKXg + VWaLafau0hLgksAwCDl9pDXX+9H+XlDQqAUzNf70f/MdiEZ1okORrarWvHxvaD3GC0J6UHmfxMWE + btITM2IufD7zagVmf4JHc39pf+cNzfmJ7RzngYZTre7gko8iMcxNHf7pkXhsMgyk93V+coZILQfx + hLkXPvzhrqo5+l7gOM+nsrQ9rpQdqhcLj23MNtCn8/1A1XOifOhouns+FOfvHqZFXvzxfhZ/wxMa + SZ/Qds7vw49H5iUU7Bh2j4pbd6f8y2d2e82roTg/jug64AvTrse1PhY8N9Bln+3J1nvo4TwfyNF0 + k/8zT+riLCkBPqlFMIm6kOFYo5A1usG05vWpRkYNAzgOMqZvnJJ3UfqwIFVxShdtsEmnGOIBueyz + JO7uOvnT66yX6m/eQuL4oY9He7lEvj0+iROkj3B4Tt8LpFYy4m7uL3zY0z2spTwgQZnb1SNG5ALz + /JYY4JX6hPNWBvUxrfGkIdr2PqktyK45kF8ekRb71Q2+a2HEwzyvG8g1in78kmzc6YimVzp6kO/e + O7I1t6dw4LF1U+b3x7TQD0P+HC0ZfYLnnWm0oyG1uZyAn9GCGXN/HB29c2AVnE8EN/meM9tbND/+ + RfQV2/pDU8YazPycNrPf+/EPeKPtlex+/DsvaAGjbhGyna6kHdjGe4Ij6guM6rvY9t1Rzf+TX6Yr + a5koPPO19PmmWBHXm1YyHo4ErX55Ms1L2+objM0JzOXFJa74erdD+YmW6qxndKjzEg1NWkXguuED + y0n/+s2/lmAOizNdakrRTmiTNHCPJ484zvrlD6udJqOl/doz61OGaBBET4E42d7ZZmVjffDKrkSn + QyFhZPcPPoVqFilweqG/89YpjuSBWph35i9pV01HVAFM15jTcubfM6+OEDPqHb7txwpx6h8EkIx4 + TWb/2P7NO73TiVLFqhT0uayfA4ybRGTu7Lfn+bGBlu6xYdum1cIRLl4BiiU/mTkRU+dL4Fv4128r + 4L//8c9//r/fhkH9yfLXvBjQ52P/7/9dFfh3kiX/Xi6lfzPpbxOBdkmR/+u//rOE8K9v+6m//f/v + P8/83f3rv/4p/m0b/Kv/9Mnr/3z8j/m3/vsf/wMAAP//AwAIvKZh4SAAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7b8693dd4bad48b7-LHR + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Sat, 15 Apr 2023 19:25:59 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + openai-organization: + - user-iy0qn7phyookv8vra62ulvxe + openai-processing-ms: + - '21' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-ratelimit-limit-requests: + - '60' + x-ratelimit-remaining-requests: + - '56' + x-ratelimit-reset-requests: + - 3.714s + x-request-id: + - a95cc78f0e0fc53eb245fdbe9d71936b + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml new file mode 100644 index 00000000..ffe4e0bb --- /dev/null +++ b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_with_metadata.yaml @@ -0,0 +1,384 @@ +interactions: +- request: + body: '{"input": [[8134], [2308], [43673]], "encoding_format": "base64"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '65' + Content-Type: + - application/json + User-Agent: + - User-Agent-DUMMY + X-OpenAI-Client-User-Agent: + - X-OpenAI-Client-User-Agent-DUMMY + authorization: + - authorization-DUMMY + method: POST + uri: https://api.openai.com/v1/engines/text-embedding-ada-002/embeddings + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7b8693cc4cf823dc-LHR + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Sat, 15 Apr 2023 19:25:56 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + openai-organization: + - user-iy0qn7phyookv8vra62ulvxe + openai-processing-ms: + - '298' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-ratelimit-limit-requests: + - '60' + x-ratelimit-remaining-requests: + - '58' + x-ratelimit-reset-requests: + - 1.666s + x-request-id: + - 05aa395b3d571732ad5050891d1e0e1e + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml new file mode 100644 index 00000000..15695091 --- /dev/null +++ b/tests/integration_tests/vectorstores/cassettes/test_weaviate/TestWeaviate.test_similarity_search_without_metadata.yaml @@ -0,0 +1,385 @@ +interactions: +- request: + body: '{"input": [[8134], [2308], [43673]], "encoding_format": "base64"}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '65' + Content-Type: + - application/json + User-Agent: + - User-Agent-DUMMY + X-OpenAI-Client-User-Agent: + - X-OpenAI-Client-User-Agent-DUMMY + authorization: + - authorization-DUMMY + method: POST + uri: https://api.openai.com/v1/engines/text-embedding-ada-002/embeddings + response: + body: + string: !!binary | + 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 + AwC5CQjfhWEAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7b8693c3fe087743-LHR + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Sat, 15 Apr 2023 19:25:55 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + openai-organization: + - user-iy0qn7phyookv8vra62ulvxe + openai-processing-ms: + - '110' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-ratelimit-limit-requests: + - '60' + x-ratelimit-remaining-requests: + - '59' + x-ratelimit-reset-requests: + - 1s + x-request-id: + - da07a850f69de94f01587228396b9036 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration_tests/vectorstores/docker-compose/weaviate.yml b/tests/integration_tests/vectorstores/docker-compose/weaviate.yml index a1911480..e270c71c 100644 --- a/tests/integration_tests/vectorstores/docker-compose/weaviate.yml +++ b/tests/integration_tests/vectorstores/docker-compose/weaviate.yml @@ -17,6 +17,7 @@ services: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - DEFAULT_VECTORIZER_MODULE: 'none' - ENABLE_MODULES: '' + DEFAULT_VECTORIZER_MODULE: 'text2vec-openai' + ENABLE_MODULES: 'text2vec-openai' + OPENAI_APIKEY: '${OPENAI_API_KEY}' CLUSTER_HOSTNAME: 'node1' diff --git a/tests/integration_tests/vectorstores/test_weaviate.py b/tests/integration_tests/vectorstores/test_weaviate.py index 5699ecea..0034cc0d 100644 --- a/tests/integration_tests/vectorstores/test_weaviate.py +++ b/tests/integration_tests/vectorstores/test_weaviate.py @@ -1,5 +1,6 @@ """Test Weaviate functionality.""" import logging +import os from typing import Generator, Union import pytest @@ -18,6 +19,11 @@ docker compose -f weaviate.yml up class TestWeaviate: + @classmethod + def setup_class(cls) -> None: + if not os.getenv("OPENAI_API_KEY"): + raise ValueError("OPENAI_API_KEY environment variable is not set") + @pytest.fixture(scope="class", autouse=True) def weaviate_url(self) -> Union[str, Generator[str, None, None]]: """Return the weaviate url.""" @@ -28,24 +34,57 @@ class TestWeaviate: client = Client(url) client.schema.delete_all() - def test_similarity_search_without_metadata(self, weaviate_url: str) -> None: + @pytest.mark.vcr(ignore_localhost=True) + def test_similarity_search_without_metadata( + self, weaviate_url: str, embedding_openai: OpenAIEmbeddings + ) -> None: """Test end to end construction and search without metadata.""" texts = ["foo", "bar", "baz"] docsearch = Weaviate.from_texts( texts, - OpenAIEmbeddings(), + embedding_openai, weaviate_url=weaviate_url, ) output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo")] - def test_similarity_search_with_metadata(self, weaviate_url: str) -> None: + @pytest.mark.vcr(ignore_localhost=True) + def test_similarity_search_with_metadata( + self, weaviate_url: str, embedding_openai: OpenAIEmbeddings + ) -> None: """Test end to end construction and search with metadata.""" texts = ["foo", "bar", "baz"] metadatas = [{"page": i} for i in range(len(texts))] docsearch = Weaviate.from_texts( - texts, OpenAIEmbeddings(), metadatas=metadatas, weaviate_url=weaviate_url + texts, embedding_openai, metadatas=metadatas, weaviate_url=weaviate_url ) output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo", metadata={"page": 0})] + + @pytest.mark.vcr(ignore_localhost=True) + def test_max_marginal_relevance_search( + self, weaviate_url: str, embedding_openai: OpenAIEmbeddings + ) -> None: + """Test end to end construction and MRR search.""" + texts = ["foo", "bar", "baz"] + metadatas = [{"page": i} for i in range(len(texts))] + + docsearch = Weaviate.from_texts( + texts, embedding_openai, metadatas=metadatas, weaviate_url=weaviate_url + ) + # if lambda=1 the algorithm should be equivalent to standard ranking + standard_ranking = docsearch.similarity_search("foo", k=2) + output = docsearch.max_marginal_relevance_search( + "foo", k=2, fetch_k=3, lambda_mult=1.0 + ) + assert output == standard_ranking + + # if lambda=0 the algorithm should favour maximal diversity + output = docsearch.max_marginal_relevance_search( + "foo", k=2, fetch_k=3, lambda_mult=0.0 + ) + assert output == [ + Document(page_content="foo", metadata={"page": 0}), + Document(page_content="bar", metadata={"page": 1}), + ]