|
64 | 64 | },
|
65 | 65 | {
|
66 | 66 | "cell_type": "code",
|
67 |
| - "execution_count": 1, |
| 67 | + "execution_count": null, |
68 | 68 | "metadata": {
|
69 | 69 | "tags": []
|
70 | 70 | },
|
|
108 | 108 | },
|
109 | 109 | {
|
110 | 110 | "cell_type": "code",
|
111 |
| - "execution_count": 2, |
| 111 | + "execution_count": null, |
112 | 112 | "metadata": {
|
113 | 113 | "tags": []
|
114 | 114 | },
|
|
143 | 143 | " await pg_engine.ainit_vectorstore_table(\n",
|
144 | 144 | " table_name=TABLE_NAME,\n",
|
145 | 145 | " vector_size=VECTOR_SIZE,\n",
|
146 |
| - " id_column=Column(name=\"id\", data_type=\"INTEGER\", nullable=False),\n", |
147 | 146 | " metadata_columns=[\n",
|
| 147 | + " Column(\"likes\", \"INTEGER\"),\n", |
148 | 148 | " Column(\"location\", \"TEXT\"),\n",
|
149 | 149 | " Column(\"topic\", \"TEXT\"),\n",
|
150 | 150 | " ],\n",
|
|
178 | 178 | },
|
179 | 179 | {
|
180 | 180 | "cell_type": "code",
|
181 |
| - "execution_count": 5, |
| 181 | + "execution_count": null, |
182 | 182 | "metadata": {
|
183 | 183 | "colab": {
|
184 | 184 | "base_uri": "https://localhost:8080/"
|
|
226 | 226 | " engine=pg_engine,\n",
|
227 | 227 | " table_name=TABLE_NAME,\n",
|
228 | 228 | " embedding_service=embedding,\n",
|
229 |
| - " id_column=\"id\",\n", |
230 | 229 | " metadata_columns=[\"location\", \"topic\"]\n",
|
231 | 230 | ")"
|
232 | 231 | ]
|
|
260 | 259 | " Document(\n",
|
261 | 260 | " id=uuid.uuid4(),\n",
|
262 | 261 | " page_content=\"there are cats in the pond\",\n",
|
263 |
| - " metadata={\"id\": 1, \"location\": \"pond\", \"topic\": \"animals\"},\n", |
| 262 | + " metadata={\"likes\": 1, \"location\": \"pond\", \"topic\": \"animals\"},\n", |
264 | 263 | " ),\n",
|
265 | 264 | " Document(\n",
|
266 | 265 | " id=uuid.uuid4(),\n",
|
267 | 266 | " page_content=\"ducks are also found in the pond\",\n",
|
268 |
| - " metadata={\"id\": 2, \"location\": \"pond\", \"topic\": \"animals\"},\n", |
| 267 | + " metadata={\"likes\": 30, \"location\": \"pond\", \"topic\": \"animals\"},\n", |
269 | 268 | " ),\n",
|
270 | 269 | " Document(\n",
|
271 | 270 | " id=uuid.uuid4(),\n",
|
272 | 271 | " page_content=\"fresh apples are available at the market\",\n",
|
273 |
| - " metadata={\"id\": 3, \"location\": \"market\", \"topic\": \"food\"},\n", |
| 272 | + " metadata={\"likes\": 20, \"location\": \"market\", \"topic\": \"food\"},\n", |
274 | 273 | " ),\n",
|
275 | 274 | " Document(\n",
|
276 | 275 | " id=uuid.uuid4(),\n",
|
277 | 276 | " page_content=\"the market also sells fresh oranges\",\n",
|
278 |
| - " metadata={\"id\": 4, \"location\": \"market\", \"topic\": \"food\"},\n", |
| 277 | + " metadata={\"likes\": 5, \"location\": \"market\", \"topic\": \"food\"},\n", |
279 | 278 | " ),\n",
|
280 | 279 | "]\n",
|
281 | 280 | "\n",
|
|
295 | 294 | {
|
296 | 295 | "cell_type": "code",
|
297 | 296 | "execution_count": null,
|
298 |
| - "metadata": {}, |
| 297 | + "metadata": { |
| 298 | + "tags": [] |
| 299 | + }, |
299 | 300 | "outputs": [],
|
300 | 301 | "source": [
|
301 | 302 | "# We'll use the ID of the first doc to delete it\n",
|
|
315 | 316 | {
|
316 | 317 | "cell_type": "code",
|
317 | 318 | "execution_count": null,
|
318 |
| - "metadata": {}, |
| 319 | + "metadata": { |
| 320 | + "tags": [] |
| 321 | + }, |
319 | 322 | "outputs": [],
|
320 | 323 | "source": [
|
321 | 324 | "query = \"I'd like a fruit.\"\n",
|
|
334 | 337 | {
|
335 | 338 | "cell_type": "code",
|
336 | 339 | "execution_count": null,
|
337 |
| - "metadata": {}, |
| 340 | + "metadata": { |
| 341 | + "tags": [] |
| 342 | + }, |
338 | 343 | "outputs": [],
|
339 | 344 | "source": [
|
340 | 345 | "query_vector = embedding.embed_query(query)\n",
|
|
359 | 364 | "\n",
|
360 | 365 | "| Operator | Meaning/Category |\n",
|
361 | 366 | "|-----------|-------------------------|\n",
|
362 |
| - "| $eq | Equality (==) |\n", |
363 |
| - "| $ne | Inequality (!=) |\n", |
364 |
| - "| $lt | Less than (<) |\n", |
365 |
| - "| $lte | Less than or equal (<=) |\n", |
366 |
| - "| $gt | Greater than (>) |\n", |
367 |
| - "| $gte | Greater than or equal (>=) |\n", |
368 |
| - "| $in | Special Cased (in) |\n", |
369 |
| - "| $nin | Special Cased (not in) |\n", |
370 |
| - "| $between | Special Cased (between) |\n", |
371 |
| - "| $exists | Special Cased (is null) |\n", |
372 |
| - "| $like | Text (like) |\n", |
373 |
| - "| $ilike | Text (case-insensitive like) |\n", |
374 |
| - "| $and | Logical (and) |\n", |
375 |
| - "| $or | Logical (or) |" |
| 367 | + "| \\$eq | Equality (==) |\n", |
| 368 | + "| \\$ne | Inequality (!=) |\n", |
| 369 | + "| \\$lt | Less than (<) |\n", |
| 370 | + "| \\$lte | Less than or equal (<=) |\n", |
| 371 | + "| \\$gt | Greater than (>) |\n", |
| 372 | + "| \\$gte | Greater than or equal (>=) |\n", |
| 373 | + "| \\$in | Special Cased (in) |\n", |
| 374 | + "| \\$nin | Special Cased (not in) |\n", |
| 375 | + "| \\$between | Special Cased (between) |\n", |
| 376 | + "| \\$exists | Special Cased (is null) |\n", |
| 377 | + "| \\$like | Text (like) |\n", |
| 378 | + "| \\$ilike | Text (case-insensitive like) |\n", |
| 379 | + "| \\$and | Logical (and) |\n", |
| 380 | + "| \\$or | Logical (or) |\n" |
376 | 381 | ]
|
377 | 382 | },
|
378 | 383 | {
|
|
383 | 388 | },
|
384 | 389 | "outputs": [],
|
385 | 390 | "source": [
|
386 |
| - "query = \"meow\"\n", |
387 |
| - "docs = await vectorstore.asimilarity_search(query, filter={\"topic\": \"food\"})\n", |
388 |
| - "for doc in docs:\n", |
389 |
| - " print(repr(doc))" |
| 391 | + "await vectorstore.asimilarity_search(\"birds\", filter={\"$or\": [{\"topic\": \"animals\"}, {\"location\": \"market\"}]})" |
| 392 | + ] |
| 393 | + }, |
| 394 | + { |
| 395 | + "cell_type": "code", |
| 396 | + "execution_count": null, |
| 397 | + "metadata": { |
| 398 | + "tags": [] |
| 399 | + }, |
| 400 | + "outputs": [], |
| 401 | + "source": [ |
| 402 | + "await vectorstore.asimilarity_search(\"apple\", filter={\"topic\": \"food\"})" |
| 403 | + ] |
| 404 | + }, |
| 405 | + { |
| 406 | + "cell_type": "code", |
| 407 | + "execution_count": null, |
| 408 | + "metadata": { |
| 409 | + "tags": [] |
| 410 | + }, |
| 411 | + "outputs": [], |
| 412 | + "source": [ |
| 413 | + "await vectorstore.asimilarity_search(\"apple\", filter={\"topic\": {\"$in\": [\"food\", \"animals\"]}})" |
| 414 | + ] |
| 415 | + }, |
| 416 | + { |
| 417 | + "cell_type": "code", |
| 418 | + "execution_count": null, |
| 419 | + "metadata": { |
| 420 | + "tags": [] |
| 421 | + }, |
| 422 | + "outputs": [], |
| 423 | + "source": [ |
| 424 | + "await vectorstore.asimilarity_search(\"sales of fruit\", filter={\"topic\": {\"$ne\": \"animals\"}})" |
390 | 425 | ]
|
391 | 426 | },
|
392 | 427 | {
|
|
408 | 443 | {
|
409 | 444 | "cell_type": "code",
|
410 | 445 | "execution_count": null,
|
411 |
| - "metadata": {}, |
| 446 | + "metadata": { |
| 447 | + "tags": [] |
| 448 | + }, |
412 | 449 | "outputs": [],
|
413 | 450 | "source": [
|
414 | 451 | "from langchain_postgres.v2.indexes import IVFFlatIndex\n",
|
|
429 | 466 | {
|
430 | 467 | "cell_type": "code",
|
431 | 468 | "execution_count": null,
|
432 |
| - "metadata": {}, |
| 469 | + "metadata": { |
| 470 | + "tags": [] |
| 471 | + }, |
433 | 472 | "outputs": [],
|
434 | 473 | "source": [
|
435 | 474 | "await vectorstore.areindex() # Re-index using default index name"
|
|
447 | 486 | {
|
448 | 487 | "cell_type": "code",
|
449 | 488 | "execution_count": null,
|
450 |
| - "metadata": {}, |
| 489 | + "metadata": { |
| 490 | + "tags": [] |
| 491 | + }, |
451 | 492 | "outputs": [],
|
452 | 493 | "source": [
|
453 | 494 | "await vectorstore.adrop_vector_index() # Drop index using default name"
|
|
0 commit comments