Error creating Supabase vector store when running self-query example code
Labels: name: area: vector store, name: auto:bug

### System Info

Langchain: 0.0.285
Platform: OSX Ventura (apple silicon)
Python version: 3.11

### Who can help?

@gregnr since it looks like you added the [Supabase example code](https://python.langchain.com/docs/modules/data_connection/retrievers/self_query/supabase_self_query)

### Information

- [X] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [ ] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [X] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [ ] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

1. Create fresh conda env with python 3.11
2. Install JupyterLap and create notebook
3. Follow the steps in the [Supabase example code](https://python.langchain.com/docs/modules/data_connection/retrievers/self_query/supabase_self_query) tutorial

On the step to:

```
vectorstore = SupabaseVectorStore.from_documents(
    docs, 
    embeddings, 
    client=supabase, 
    table_name="documents", 
    query_name="match_documents"
)
```

it fails with error `JSONDecodeError: Expecting value: line 1 column 1 (char 0)`:

<details>

<summary>Stacktrace</summary>

```
---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
Cell In[10], line 1
----> 1 vectorstore = SupabaseVectorStore.from_documents(
      2     docs, 
      3     embeddings, 
      4     client=supabase, 
      5     table_name="documents", 
      6     query_name="match_documents"
      7 )

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/langchain/vectorstores/base.py:417, in VectorStore.from_documents(cls, documents, embedding, **kwargs)
    415 texts = [d.page_content for d in documents]
    416 metadatas = [d.metadata for d in documents]
--> 417 return cls.from_texts(texts, embedding, metadatas=metadatas, **kwargs)

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/langchain/vectorstores/supabase.py:147, in SupabaseVectorStore.from_texts(cls, texts, embedding, metadatas, client, table_name, query_name, ids, **kwargs)
    145 ids = [str(uuid.uuid4()) for _ in texts]
    146 docs = cls._texts_to_documents(texts, metadatas)
--> 147 cls._add_vectors(client, table_name, embeddings, docs, ids)
    149 return cls(
    150     client=client,
    151     embedding=embedding,
    152     table_name=table_name,
    153     query_name=query_name,
    154 )

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/langchain/vectorstores/supabase.py:323, in SupabaseVectorStore._add_vectors(client, table_name, vectors, documents, ids)
    320 for i in range(0, len(rows), chunk_size):
    321     chunk = rows[i : i + chunk_size]
--> 323     result = client.from_(table_name).upsert(chunk).execute()  # type: ignore
    325     if len(result.data) == 0:
    326         raise Exception("Error inserting: No rows added")

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/postgrest/_sync/request_builder.py:62, in SyncQueryRequestBuilder.execute(self)
     53 r = self.session.request(
     54     self.http_method,
     55     self.path,
   (...)
     58     headers=self.headers,
     59 )
     61 try:
---> 62     return APIResponse.from_http_request_response(r)
     63 except ValidationError as e:
     64     raise APIError(r.json()) from e

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/postgrest/base_request_builder.py:154, in APIResponse.from_http_request_response(cls, request_response)
    150 @classmethod
    151 def from_http_request_response(
    152     cls: Type[APIResponse], request_response: RequestResponse
    153 ) -> APIResponse:
--> 154     data = request_response.json()
    155     count = cls._get_count_from_http_request_response(request_response)
    156     return cls(data=data, count=count)

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/site-packages/httpx/_models.py:756, in Response.json(self, **kwargs)
    754     if encoding is not None:
    755         return jsonlib.loads(self.content.decode(encoding), **kwargs)
--> 756 return jsonlib.loads(self.text, **kwargs)

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/json/__init__.py:346, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    341     s = s.decode(detect_encoding(s), 'surrogatepass')
    343 if (cls is None and object_hook is None and
    344         parse_int is None and parse_float is None and
    345         parse_constant is None and object_pairs_hook is None and not kw):
--> 346     return _default_decoder.decode(s)
    347 if cls is None:
    348     cls = JSONDecoder

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/json/decoder.py:337, in JSONDecoder.decode(self, s, _w)
    332 def decode(self, s, _w=WHITESPACE.match):
    333     """Return the Python representation of ``s`` (a ``str`` instance
    334     containing a JSON document).
    335 
    336     """
--> 337     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338     end = _w(s, end).end()
    339     if end != len(s):

File /opt/miniconda3/envs/self-query-experiment/lib/python3.11/json/decoder.py:355, in JSONDecoder.raw_decode(self, s, idx)
    353     obj, end = self.scan_once(s, idx)
    354 except StopIteration as err:
--> 355     raise JSONDecodeError("Expecting value", s, err.value) from None
    356 return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
```

</details>

It appears that Supabase is returning a 201 response code, with an empty body in the response.  Then the posgrest library is trying to parse the json with `data = request_response.json()`, but that fails due to the empty body.

Are there some extra headers that should be added to the supabase client to tell it return a response body?


### Expected behavior

No error when invoking `SupabaseVectorStore.from_documents()`