oracle.md
1 --- 2 title: "Oracle AI Vector Search" 3 id: integrations-oracle 4 description: "Oracle AI Vector Search integration for Haystack" 5 slug: "/integrations-oracle" 6 --- 7 8 9 ## haystack_integrations.components.retrievers.oracle.embedding_retriever 10 11 ### OracleEmbeddingRetriever 12 13 Retrieves documents from an OracleDocumentStore using vector similarity. 14 15 Use inside a Haystack pipeline after a text embedder:: 16 17 ``` 18 pipeline.add_component("embedder", SentenceTransformersTextEmbedder()) 19 pipeline.add_component("retriever", OracleEmbeddingRetriever( 20 document_store=store, top_k=5 21 )) 22 pipeline.connect("embedder.embedding", "retriever.query_embedding") 23 ``` 24 25 #### run 26 27 ```python 28 run( 29 query_embedding: list[float], 30 filters: dict[str, Any] | None = None, 31 top_k: int | None = None, 32 ) -> dict[str, list[Document]] 33 ``` 34 35 Retrieve documents by vector similarity. 36 37 Args: 38 query_embedding: Dense float vector from an embedder component. 39 filters: Runtime filters, merged with constructor filters according to filter_policy. 40 top_k: Override the constructor top_k for this call. 41 42 Returns: 43 `{"documents": [Document, ...]}` 44 45 #### run_async 46 47 ```python 48 run_async( 49 query_embedding: list[float], 50 filters: dict[str, Any] | None = None, 51 top_k: int | None = None, 52 ) -> dict[str, list[Document]] 53 ``` 54 55 Async variant of :meth:`run`. 56 57 #### to_dict 58 59 ```python 60 to_dict() -> dict[str, Any] 61 ``` 62 63 Serializes the component to a dictionary. 64 65 **Returns:** 66 67 - <code>dict\[str, Any\]</code> – Dictionary with serialized data. 68 69 #### from_dict 70 71 ```python 72 from_dict(data: dict[str, Any]) -> OracleEmbeddingRetriever 73 ``` 74 75 Deserializes the component from a dictionary. 76 77 **Parameters:** 78 79 - **data** (<code>dict\[str, Any\]</code>) – Dictionary to deserialize from. 80 81 **Returns:** 82 83 - <code>OracleEmbeddingRetriever</code> – Deserialized component. 84 85 ## haystack_integrations.document_stores.oracle.document_store 86 87 ### OracleConnectionConfig 88 89 Connection parameters for Oracle Database. 90 91 Supports both thin (direct TCP) and thick (wallet / ADB-S) modes. 92 Thin mode requires no Oracle Instant Client; thick mode is activated 93 automatically when *wallet_location* is provided. 94 95 #### to_dict 96 97 ```python 98 to_dict() -> dict[str, Any] 99 ``` 100 101 Serializes the component to a dictionary. 102 103 **Returns:** 104 105 - <code>dict\[str, Any\]</code> – Dictionary with serialized data. 106 107 #### from_dict 108 109 ```python 110 from_dict(data: dict[str, Any]) -> OracleConnectionConfig 111 ``` 112 113 Deserializes the component from a dictionary. 114 115 **Parameters:** 116 117 - **data** (<code>dict\[str, Any\]</code>) – Dictionary to deserialize from. 118 119 **Returns:** 120 121 - <code>OracleConnectionConfig</code> – Deserialized component. 122 123 ### OracleDocumentStore 124 125 Haystack DocumentStore backed by Oracle AI Vector Search. 126 127 Requires Oracle Database 23ai or later (for VECTOR data type and 128 IF NOT EXISTS DDL support). 129 130 Usage:: 131 132 ``` 133 from haystack.utils import Secret 134 from haystack_integrations.document_stores.oracle import ( 135 OracleDocumentStore, OracleConnectionConfig, 136 ) 137 138 store = OracleDocumentStore( 139 connection_config=OracleConnectionConfig( 140 user=Secret.from_env_var("ORACLE_USER"), 141 password=Secret.from_env_var("ORACLE_PASSWORD"), 142 dsn=Secret.from_env_var("ORACLE_DSN"), 143 ), 144 embedding_dim=1536, 145 ) 146 ``` 147 148 #### __init__ 149 150 ```python 151 __init__( 152 *, 153 connection_config: OracleConnectionConfig, 154 table_name: str = "haystack_documents", 155 embedding_dim: int, 156 distance_metric: Literal["COSINE", "EUCLIDEAN", "DOT"] = "COSINE", 157 create_table_if_not_exists: bool = True, 158 create_index: bool = False, 159 hnsw_neighbors: int = 32, 160 hnsw_ef_construction: int = 200, 161 hnsw_accuracy: int = 95, 162 hnsw_parallel: int = 4 163 ) -> None 164 ``` 165 166 Initialise the document store and optionally create the backing table and indexes. 167 168 **Parameters:** 169 170 - **connection_config** (<code>OracleConnectionConfig</code>) – Oracle connection settings (user, password, DSN, optional wallet). 171 - **table_name** (<code>str</code>) – Name of the Oracle table used to store documents. Must be a valid Oracle 172 identifier (letters, digits, `_`, `$`, `#`; max 128 chars; cannot start with a digit). 173 - **embedding_dim** (<code>int</code>) – Dimensionality of the embedding vectors. Must match the model producing them. 174 - **distance_metric** (<code>Literal['COSINE', 'EUCLIDEAN', 'DOT']</code>) – Vector distance function used for similarity search. 175 One of `"COSINE"`, `"EUCLIDEAN"`, or `"DOT"`. 176 - **create_table_if_not_exists** (<code>bool</code>) – When `True` (default), creates the table and the DBMS_SEARCH 177 keyword index on first use if they do not already exist. Set to `False` when connecting to a 178 pre-existing table. 179 - **create_index** (<code>bool</code>) – When `True`, creates an HNSW vector index on initialisation. Equivalent to 180 calling :meth:`create_hnsw_index` manually. Defaults to `False`. 181 - **hnsw_neighbors** (<code>int</code>) – Number of neighbours in the HNSW graph. Higher values improve recall at the 182 cost of index size and build time. Defaults to `32`. 183 - **hnsw_ef_construction** (<code>int</code>) – Size of the dynamic candidate list during HNSW index construction. 184 Higher values improve recall at the cost of build time. Defaults to `200`. 185 - **hnsw_accuracy** (<code>int</code>) – Target recall accuracy percentage for the HNSW index (0-100). 186 Defaults to `95`. 187 - **hnsw_parallel** (<code>int</code>) – Degree of parallelism used when building the HNSW index. Defaults to `4`. 188 189 **Raises:** 190 191 - <code>ValueError</code> – If `table_name` is not a valid Oracle identifier or `embedding_dim` is not 192 a positive integer. 193 194 #### create_keyword_index 195 196 ```python 197 create_keyword_index() -> None 198 ``` 199 200 Create the DBMS_SEARCH keyword index on this table. 201 202 Safe to call multiple times — silently skips if the index already exists. 203 Required for keyword retrieval. Called automatically when 204 `create_table_if_not_exists=True`, but must be called explicitly 205 when connecting to a pre-existing table. 206 207 #### create_hnsw_index 208 209 ```python 210 create_hnsw_index() -> None 211 ``` 212 213 Create an HNSW vector index on the embedding column. 214 215 Safe to call multiple times — uses IF NOT EXISTS. 216 217 #### create_hnsw_index_async 218 219 ```python 220 create_hnsw_index_async() -> None 221 ``` 222 223 Asynchronously creates an HNSW vector index on the embedding column. 224 225 Safe to call multiple times — uses `IF NOT EXISTS`. 226 227 #### write_documents 228 229 ```python 230 write_documents( 231 documents: list[Document], policy: DuplicatePolicy = DuplicatePolicy.NONE 232 ) -> int 233 ``` 234 235 Writes documents to the document store. 236 237 **Parameters:** 238 239 - **documents** (<code>list\[Document\]</code>) – A list of Documents to write to the document store. 240 - **policy** (<code>DuplicatePolicy</code>) – The duplicate policy to use when writing documents. 241 242 **Returns:** 243 244 - <code>int</code> – The number of documents written to the document store. 245 246 **Raises:** 247 248 - <code>DuplicateDocumentError</code> – If a document with the same id already exists in the document store 249 and the policy is set to `DuplicatePolicy.FAIL` or `DuplicatePolicy.NONE`. 250 251 #### write_documents_async 252 253 ```python 254 write_documents_async( 255 documents: list[Document], policy: DuplicatePolicy = DuplicatePolicy.NONE 256 ) -> int 257 ``` 258 259 Asynchronously writes documents to the document store. 260 261 **Parameters:** 262 263 - **documents** (<code>list\[Document\]</code>) – A list of Documents to write to the document store. 264 - **policy** (<code>DuplicatePolicy</code>) – The duplicate policy to use when writing documents. 265 266 **Returns:** 267 268 - <code>int</code> – The number of documents written to the document store. 269 270 **Raises:** 271 272 - <code>DuplicateDocumentError</code> – If a document with the same id already exists in the document store 273 and the policy is set to `DuplicatePolicy.FAIL` or `DuplicatePolicy.NONE`. 274 275 #### filter_documents 276 277 ```python 278 filter_documents(filters: dict[str, Any] | None = None) -> list[Document] 279 ``` 280 281 Returns the documents that match the filters provided. 282 283 For a detailed specification of the filters, 284 refer to the [documentation](https://docs.haystack.deepset.ai/docs/metadata-filtering) 285 286 **Parameters:** 287 288 - **filters** (<code>dict\[str, Any\] | None</code>) – The filters to apply to the document list. 289 290 **Returns:** 291 292 - <code>list\[Document\]</code> – A list of Documents that match the given filters. 293 294 #### filter_documents_async 295 296 ```python 297 filter_documents_async(filters: dict[str, Any] | None = None) -> list[Document] 298 ``` 299 300 Asynchronously returns the documents that match the filters provided. 301 302 For a detailed specification of the filters, 303 refer to the [documentation](https://docs.haystack.deepset.ai/docs/metadata-filtering) 304 305 **Parameters:** 306 307 - **filters** (<code>dict\[str, Any\] | None</code>) – The filters to apply to the document list. 308 309 **Returns:** 310 311 - <code>list\[Document\]</code> – A list of Documents that match the given filters. 312 313 #### delete_documents 314 315 ```python 316 delete_documents(document_ids: list[str]) -> None 317 ``` 318 319 Deletes documents that match the provided `document_ids` from the document store. 320 321 **Parameters:** 322 323 - **document_ids** (<code>list\[str\]</code>) – the document ids to delete 324 325 #### delete_documents_async 326 327 ```python 328 delete_documents_async(document_ids: list[str]) -> None 329 ``` 330 331 Asynchronously deletes documents that match the provided `document_ids` from the document store. 332 333 **Parameters:** 334 335 - **document_ids** (<code>list\[str\]</code>) – the document ids to delete 336 337 #### count_documents 338 339 ```python 340 count_documents() -> int 341 ``` 342 343 Returns how many documents are present in the document store. 344 345 **Returns:** 346 347 - <code>int</code> – Number of documents in the document store. 348 349 #### count_documents_async 350 351 ```python 352 count_documents_async() -> int 353 ``` 354 355 Asynchronously returns how many documents are present in the document store. 356 357 **Returns:** 358 359 - <code>int</code> – Number of documents in the document store. 360 361 #### delete_table 362 363 ```python 364 delete_table() -> None 365 ``` 366 367 Permanently drops the document store table and its associated DBMS_SEARCH keyword index. 368 369 Uses `DROP TABLE ... PURGE` which bypasses the Oracle recycle bin — the operation is 370 irreversible. The keyword index is dropped after the table; if either operation fails a 371 :class:`DocumentStoreError` is raised. 372 373 **Raises:** 374 375 - <code>DocumentStoreError</code> – If the table or keyword index cannot be dropped. 376 377 #### delete_table_async 378 379 ```python 380 delete_table_async() -> None 381 ``` 382 383 Asynchronously permanently drops the document store table and its DBMS_SEARCH keyword index. 384 385 Uses `DROP TABLE ... PURGE` which bypasses the Oracle recycle bin — the operation is 386 irreversible. 387 388 **Raises:** 389 390 - <code>DocumentStoreError</code> – If the table or keyword index cannot be dropped. 391 392 #### delete_all_documents 393 394 ```python 395 delete_all_documents() -> None 396 ``` 397 398 Removes all documents from the table using `TRUNCATE`. 399 400 `TRUNCATE` is non-recoverable — it cannot be rolled back and bypasses row-level triggers. 401 The table structure and indexes are preserved. 402 403 #### delete_all_documents_async 404 405 ```python 406 delete_all_documents_async() -> None 407 ``` 408 409 Asynchronously removes all documents from the table using `TRUNCATE`. 410 411 `TRUNCATE` is non-recoverable — it cannot be rolled back and bypasses row-level triggers. 412 The table structure and indexes are preserved. 413 414 #### count_documents_by_filter 415 416 ```python 417 count_documents_by_filter(filters: dict[str, Any]) -> int 418 ``` 419 420 Returns the number of documents that match the provided filters. 421 422 **Parameters:** 423 424 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict. An empty dict matches all documents. 425 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 426 427 **Returns:** 428 429 - <code>int</code> – Count of matching documents. 430 431 #### count_documents_by_filter_async 432 433 ```python 434 count_documents_by_filter_async(filters: dict[str, Any]) -> int 435 ``` 436 437 Asynchronously returns the number of documents that match the provided filters. 438 439 **Parameters:** 440 441 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict. An empty dict matches all documents. 442 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 443 444 **Returns:** 445 446 - <code>int</code> – Count of matching documents. 447 448 #### delete_by_filter 449 450 ```python 451 delete_by_filter(filters: dict[str, Any]) -> int 452 ``` 453 454 Deletes all documents that match the provided filters. 455 456 **Parameters:** 457 458 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict. An empty dict is treated as a no-op and returns `0` 459 without touching the table. 460 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 461 462 **Returns:** 463 464 - <code>int</code> – Number of deleted documents. 465 466 #### delete_by_filter_async 467 468 ```python 469 delete_by_filter_async(filters: dict[str, Any]) -> int 470 ``` 471 472 Asynchronously deletes all documents that match the provided filters. 473 474 **Parameters:** 475 476 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict. An empty dict is treated as a no-op and returns `0` 477 without touching the table. 478 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 479 480 **Returns:** 481 482 - <code>int</code> – Number of deleted documents. 483 484 #### update_by_filter 485 486 ```python 487 update_by_filter(filters: dict[str, Any], meta: dict[str, Any]) -> int 488 ``` 489 490 Merges `meta` into the metadata of all documents that match the provided filters. 491 492 Uses Oracle's `JSON_MERGEPATCH` — existing keys are updated, new keys are added, 493 and keys set to `null` in `meta` are removed. 494 495 **Parameters:** 496 497 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict that selects which documents to update. 498 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 499 - **meta** (<code>dict\[str, Any\]</code>) – Metadata patch to apply. Must be a non-empty dictionary. 500 501 **Returns:** 502 503 - <code>int</code> – Number of updated documents. 504 505 **Raises:** 506 507 - <code>ValueError</code> – If `meta` is empty. 508 509 #### update_by_filter_async 510 511 ```python 512 update_by_filter_async(filters: dict[str, Any], meta: dict[str, Any]) -> int 513 ``` 514 515 Asynchronously merges `meta` into the metadata of all documents matching the provided filters. 516 517 Uses Oracle's `JSON_MERGEPATCH` — existing keys are updated, new keys are added, 518 and keys set to `null` in `meta` are removed. 519 520 **Parameters:** 521 522 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict that selects which documents to update. 523 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 524 - **meta** (<code>dict\[str, Any\]</code>) – Metadata patch to apply. Must be a non-empty dictionary. 525 526 **Returns:** 527 528 - <code>int</code> – Number of updated documents. 529 530 **Raises:** 531 532 - <code>ValueError</code> – If `meta` is empty. 533 534 #### count_unique_metadata_by_filter 535 536 ```python 537 count_unique_metadata_by_filter( 538 filters: dict[str, Any], metadata_fields: list[str] 539 ) -> dict[str, int] 540 ``` 541 542 Returns the number of distinct values for each requested metadata field among matching documents. 543 544 **Parameters:** 545 546 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict that scopes the document set. 547 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 548 - **metadata_fields** (<code>list\[str\]</code>) – List of metadata field names to count distinct values for. 549 Fields may be prefixed with `"meta."` (e.g. `"meta.lang"` or `"lang"`). 550 Must be a non-empty list. 551 552 **Returns:** 553 554 - <code>dict\[str, int\]</code> – Dict mapping each field name to its distinct-value count. 555 556 **Raises:** 557 558 - <code>ValueError</code> – If `metadata_fields` is empty. 559 - <code>ValueError</code> – If any field name contains characters outside `[A-Za-z0-9_.]`. 560 561 #### count_unique_metadata_by_filter_async 562 563 ```python 564 count_unique_metadata_by_filter_async( 565 filters: dict[str, Any], metadata_fields: list[str] 566 ) -> dict[str, int] 567 ``` 568 569 Asynchronously returns the number of distinct values for each metadata field among matching documents. 570 571 **Parameters:** 572 573 - **filters** (<code>dict\[str, Any\]</code>) – Haystack filter dict that scopes the document set. 574 See the `metadata filtering docs <https://docs.haystack.deepset.ai/docs/metadata-filtering>`\_. 575 - **metadata_fields** (<code>list\[str\]</code>) – List of metadata field names to count distinct values for. 576 Fields may be prefixed with `"meta."` (e.g. `"meta.lang"` or `"lang"`). 577 Must be a non-empty list. 578 579 **Returns:** 580 581 - <code>dict\[str, int\]</code> – Dict mapping each field name to its distinct-value count. 582 583 **Raises:** 584 585 - <code>ValueError</code> – If `metadata_fields` is empty. 586 - <code>ValueError</code> – If any field name contains characters outside `[A-Za-z0-9_.]`. 587 588 #### get_metadata_fields_info 589 590 ```python 591 get_metadata_fields_info() -> dict[str, dict[str, str]] 592 ``` 593 594 Return a mapping of metadata field names to their detected types. 595 596 Uses Oracle's `JSON_DATAGUIDE` aggregate to introspect the stored metadata column. 597 Returns an empty dict when the table has no documents. 598 599 **Returns:** 600 601 - <code>dict\[str, dict\[str, str\]\]</code> – Dict of the form `{"field_name": {"type": "<type>"}, ...}` where `<type>` 602 is one of `"text"`, `"number"`, or `"boolean"`. 603 604 #### get_metadata_field_min_max 605 606 ```python 607 get_metadata_field_min_max(metadata_field: str) -> dict[str, Any] 608 ``` 609 610 Return the minimum and maximum values of a metadata field across all documents. 611 612 First attempts numeric comparison via `TO_NUMBER` so that `MAX(1, 5, 10)` returns `10` 613 rather than `"5"` (which would win under lexicographic ordering). Falls back to plain string 614 comparison when the field contains non-numeric values. Numeric strings are automatically 615 converted to `int` or `float` in the result. 616 617 **Parameters:** 618 619 - **metadata_field** (<code>str</code>) – Metadata field name. May be prefixed with `"meta."` 620 (e.g. `"meta.year"` or `"year"`). 621 622 **Returns:** 623 624 - <code>dict\[str, Any\]</code> – `{"min": <value>, "max": <value>}`. Both values are `None` when the table is 625 empty or the field does not exist. 626 627 **Raises:** 628 629 - <code>ValueError</code> – If `metadata_field` contains characters outside `[A-Za-z0-9_.]`. 630 631 #### get_metadata_field_unique_values 632 633 ```python 634 get_metadata_field_unique_values( 635 metadata_field: str, 636 search_term: str | None = None, 637 from_: int = 0, 638 size: int | None = None, 639 ) -> tuple[list[str], int] 640 ``` 641 642 Return a paginated list of distinct values for a metadata field, plus the total distinct count. 643 644 **Parameters:** 645 646 - **metadata_field** (<code>str</code>) – Metadata field name. May be prefixed with `"meta."` 647 (e.g. `"meta.lang"` or `"lang"`). 648 - **search_term** (<code>str | None</code>) – Optional substring filter applied to both the document text and the field value. 649 - **from\_** (<code>int</code>) – Zero-based offset for pagination. Defaults to `0`. 650 - **size** (<code>int | None</code>) – Maximum number of values to return. When `None` all values from `from_` onward 651 are returned. 652 653 **Returns:** 654 655 - <code>tuple\[list\[str\], int\]</code> – A tuple `(values, total)` where `values` is the paginated list of distinct field 656 values as strings and `total` is the overall distinct count (before pagination). 657 658 **Raises:** 659 660 - <code>ValueError</code> – If `metadata_field` contains characters outside `[A-Za-z0-9_.]`. 661 662 #### get_metadata_fields_info_async 663 664 ```python 665 get_metadata_fields_info_async() -> dict[str, dict[str, str]] 666 ``` 667 668 Asynchronously returns a mapping of metadata field names to their detected types. 669 670 Uses Oracle's `JSON_DATAGUIDE` aggregate to introspect the stored metadata column. 671 Returns an empty dict when the table has no documents. 672 673 **Returns:** 674 675 - <code>dict\[str, dict\[str, str\]\]</code> – Dict of the form `{"field_name": {"type": "<type>"}, ...}` where `<type>` 676 is one of `"text"`, `"number"`, or `"boolean"`. 677 678 #### get_metadata_field_min_max_async 679 680 ```python 681 get_metadata_field_min_max_async(metadata_field: str) -> dict[str, Any] 682 ``` 683 684 Asynchronously returns the minimum and maximum values of a metadata field across all documents. 685 686 First attempts numeric comparison via `TO_NUMBER`, falling back to string comparison for 687 non-numeric fields. Numeric strings are automatically converted to `int` or `float`. 688 689 **Parameters:** 690 691 - **metadata_field** (<code>str</code>) – Metadata field name. May be prefixed with `"meta."` 692 (e.g. `"meta.year"` or `"year"`). 693 694 **Returns:** 695 696 - <code>dict\[str, Any\]</code> – `{"min": <value>, "max": <value>}`. Both values are `None` when the table is 697 empty or the field does not exist. 698 699 **Raises:** 700 701 - <code>ValueError</code> – If `metadata_field` contains characters outside `[A-Za-z0-9_.]`. 702 703 #### get_metadata_field_unique_values_async 704 705 ```python 706 get_metadata_field_unique_values_async( 707 metadata_field: str, 708 search_term: str | None = None, 709 from_: int = 0, 710 size: int | None = None, 711 ) -> tuple[list[str], int] 712 ``` 713 714 Asynchronously returns a paginated list of distinct values for a metadata field, plus the total count. 715 716 **Parameters:** 717 718 - **metadata_field** (<code>str</code>) – Metadata field name. May be prefixed with `"meta."` 719 (e.g. `"meta.lang"` or `"lang"`). 720 - **search_term** (<code>str | None</code>) – Optional substring filter applied to both the document text and the field value. 721 - **from\_** (<code>int</code>) – Zero-based offset for pagination. Defaults to `0`. 722 - **size** (<code>int | None</code>) – Maximum number of values to return. When `None` all values from `from_` onward 723 are returned. 724 725 **Returns:** 726 727 - <code>tuple\[list\[str\], int\]</code> – A tuple `(values, total)` where `values` is the paginated list of distinct field 728 values as strings and `total` is the overall distinct count (before pagination). 729 730 **Raises:** 731 732 - <code>ValueError</code> – If `metadata_field` contains characters outside `[A-Za-z0-9_.]`. 733 734 #### to_dict 735 736 ```python 737 to_dict() -> dict[str, Any] 738 ``` 739 740 Serializes the component to a dictionary. 741 742 **Returns:** 743 744 - <code>dict\[str, Any\]</code> – Dictionary with serialized data. 745 746 #### from_dict 747 748 ```python 749 from_dict(data: dict[str, Any]) -> OracleDocumentStore 750 ``` 751 752 Deserializes the component from a dictionary. 753 754 **Parameters:** 755 756 - **data** (<code>dict\[str, Any\]</code>) – Dictionary to deserialize from. 757 758 **Returns:** 759 760 - <code>OracleDocumentStore</code> – Deserialized component.