Vanilla dense retrievers over chunked text can find conceptually similar tables or code, but they're weak on exact identifiers (column names, function signatures, JSON keys) and structural relationships. For structured data, you typically want: (1) metadata filtering: prepend chunk metadata (table name, column type, endpoint) and pre-filter with WHERE clauses before embedding search; (2) BM25 over symbol names + comments (great precision on code); (3) hybrid; (4) cross-modal encoders trained on table-text pairs; (5) structured-output retrievers that emit SQL/SPARQL directly. For tables specifically, "TableRAG" patterns (column-level chunking, schema-aware embeddings) consistently beat naive chunking. Senior nuance: real production systems usually layer these: column metadata filter -> BM25 over header text -> dense over cell text -> cross-encoder rerank. For Snowflake/Databricks stacks you often lean on Cortex Search / Databricks Vector Search which handle these for you.