💡 All-in-one AI framework for semantic search, LLM orchestration and language model workflows
This report presents the forensic synthetic code analysis of neuml/txtai, a Python project with 12,774 GitHub stars. SynthScan v2.0 examined 56,260 lines of code across 466 source files, recording 623 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 21.3 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 623 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/agent/index.md | 0 | gets the current date and time returns: current date and time | STRING |
| HIGH | docs/agent/configuration.md | 0 | gets the current date and time returns: current date and time | STRING |
| HIGH | examples/agent_quickstart.py | 0 | gets the current date and time returns: current date and time | STRING |
| HIGH | examples/similarity.py | 0 | creates and caches a streamlit application. returns: application | STRING |
| HIGH | examples/wiki.py | 0 | creates and caches a streamlit application. returns: application | STRING |
| HIGH | examples/baseball.py | 0 | creates and caches a streamlit application. returns: application | STRING |
| HIGH | examples/article.py | 0 | creates and caches a streamlit application. returns: application | STRING |
| HIGH | src/python/txtai/database/client.py | 0 | creates a new database. args: config: database configuration | STRING |
| HIGH | src/python/txtai/database/rdbms.py | 0 | creates a new database. args: config: database configuration | STRING |
| HIGH | src/python/txtai/database/embedded.py | 0 | creates a new database. args: config: database configuration | STRING |
| HIGH | src/python/txtai/database/base.py | 0 | creates a new database. args: config: database configuration | STRING |
| HIGH | src/python/txtai/database/client.py | 0 | executes a sql statement based on the current sql dialect. args: sql: sql to execute parameters: optional bind parameter | STRING |
| HIGH | src/python/txtai/ann/dense/pgvector.py | 0 | executes a sql statement based on the current sql dialect. args: sql: sql to execute parameters: optional bind parameter | STRING |
| HIGH | src/python/txtai/scoring/pgtext.py | 0 | executes a sql statement based on the current sql dialect. args: sql: sql to execute parameters: optional bind parameter | STRING |
| HIGH | src/python/txtai/database/factory.py | 0 | attempt to resolve a custom backend. args: backend: backend class config: index configuration parameters returns: scorin | STRING |
| HIGH | src/python/txtai/ann/dense/factory.py | 0 | attempt to resolve a custom backend. args: backend: backend class config: index configuration parameters returns: scorin | STRING |
| HIGH | src/python/txtai/ann/sparse/factory.py | 0 | attempt to resolve a custom backend. args: backend: backend class config: index configuration parameters returns: scorin | STRING |
| HIGH | src/python/txtai/graph/factory.py | 0 | attempt to resolve a custom backend. args: backend: backend class config: index configuration parameters returns: scorin | STRING |
| HIGH | src/python/txtai/scoring/factory.py | 0 | attempt to resolve a custom backend. args: backend: backend class config: index configuration parameters returns: scorin | STRING |
| HIGH | src/python/txtai/database/rdbms.py | 0 | creates a new term database connection. args: path: path to term database file returns: connection | STRING |
| HIGH | src/python/txtai/ann/dense/sqlite.py | 0 | creates a new term database connection. args: path: path to term database file returns: connection | STRING |
| HIGH | src/python/txtai/scoring/terms.py | 0 | creates a new term database connection. args: path: path to term database file returns: connection | STRING |
| HIGH | src/python/txtai/pipeline/llm/generation.py | 0 | returns true if this model supports chat. returns: true if this a chat model | STRING |
| HIGH | src/python/txtai/pipeline/llm/llm.py | 0 | returns true if this model supports chat. returns: true if this a chat model | STRING |
| HIGH | src/python/txtai/pipeline/llm/huggingface.py | 0 | returns true if this model supports chat. returns: true if this a chat model | STRING |
| HIGH | src/python/txtai/pipeline/llm/opencode.py | 0 | checks if path is available on the hf hub. args: input path returns: true if this is a model on the hf hub | STRING |
| HIGH | src/python/txtai/pipeline/llm/litellm.py | 0 | checks if path is available on the hf hub. args: input path returns: true if this is a model on the hf hub | STRING |
| HIGH | src/python/txtai/vectors/dense/litellm.py | 0 | checks if path is available on the hf hub. args: input path returns: true if this is a model on the hf hub | STRING |
| HIGH | src/python/txtai/pipeline/llm/llama.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/vectors/dense/llama.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/pipeline/llm/litellm.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/vectors/dense/litellm.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/pipeline/llm/litert.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/vectors/dense/litert.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/vectors/dense/m2v.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/vectors/dense/words.py | 0 | checks if path is a wordvectors model. args: path: input path returns: true if this is a wordvectors model, false otherw | STRING |
| HIGH | src/python/txtai/pipeline/text/summary.py | 0 | applies a series of rules to clean generated text. args: text: input text returns: clean text | STRING |
| HIGH | src/python/txtai/pipeline/data/segmentation.py | 0 | applies a series of rules to clean generated text. args: text: input text returns: clean text | STRING |
| HIGH | src/python/txtai/embeddings/search/query.py | 0 | applies a series of rules to clean generated text. args: text: input text returns: clean text | STRING |
| HIGH | src/python/txtai/ann/dense/sqlite.py | 0 | initializes a new database session. args: recreate: recreates the database tables if true | STRING |
| HIGH | src/python/txtai/ann/dense/pgvector.py | 0 | initializes a new database session. args: recreate: recreates the database tables if true | STRING |
| HIGH | src/python/txtai/scoring/pgtext.py | 0 | initializes a new database session. args: recreate: recreates the database tables if true | STRING |
| HIGH | src/python/txtai/embeddings/base.py | 0 | deletes from an embeddings cluster. returns list of ids deleted. args: ids: list of ids to delete returns: ids deleted | STRING |
| HIGH | src/python/txtai/app/base.py | 0 | deletes from an embeddings cluster. returns list of ids deleted. args: ids: list of ids to delete returns: ids deleted | STRING |
| HIGH | src/python/txtai/api/base.py | 0 | deletes from an embeddings cluster. returns list of ids deleted. args: ids: list of ids to delete returns: ids deleted | STRING |
| HIGH | src/python/txtai/api/routers/embeddings.py | 0 | deletes from an embeddings cluster. returns list of ids deleted. args: ids: list of ids to delete returns: ids deleted | STRING |
| HIGH | src/python/txtai/api/cluster.py | 0 | deletes from an embeddings cluster. returns list of ids deleted. args: ids: list of ids to delete returns: ids deleted | STRING |
| HIGH | src/python/txtai/embeddings/base.py | 0 | total number of elements in this embeddings index. returns: number of elements in embeddings index | STRING |
| HIGH | src/python/txtai/app/base.py | 0 | total number of elements in this embeddings index. returns: number of elements in embeddings index | STRING |
| HIGH | src/python/txtai/api/base.py | 0 | total number of elements in this embeddings index. returns: number of elements in embeddings index | STRING |
| HIGH | src/python/txtai/api/routers/embeddings.py | 0 | total number of elements in this embeddings index. returns: number of elements in embeddings index | STRING |
| HIGH | src/python/txtai/app/base.py | 0 | finds documents most similar to the input queries. this method will run either an index search or an index + database se | STRING |
| HIGH | src/python/txtai/api/cluster.py | 0 | finds documents most similar to the input queries. this method will run either an index search or an index + database se | STRING |
| HIGH | src/python/txtai/api/routers/embeddings.py | 0 | finds documents most similar to the input queries. this method will run either an index search or an index + database se | STRING |
| HIGH | src/python/txtai/app/base.py | 0 | builds an embeddings index for previously batched documents. | STRING |
| HIGH | src/python/txtai/api/cluster.py | 0 | builds an embeddings index for previously batched documents. | STRING |
| HIGH | src/python/txtai/api/base.py | 0 | builds an embeddings index for previously batched documents. | STRING |
| HIGH | src/python/txtai/api/routers/embeddings.py | 0 | builds an embeddings index for previously batched documents. | STRING |
| HIGH | src/python/txtai/app/base.py | 0 | runs an embeddings upsert operation for previously batched documents. | STRING |
| HIGH | src/python/txtai/api/cluster.py | 0 | runs an embeddings upsert operation for previously batched documents. | STRING |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/python/testoptional.py | 9 | CODE | |
| LOW | test/python/testoptional.py | 10 | CODE | |
| LOW | test/python/testoptional.py | 167 | CODE | |
| LOW | test/python/testlibrary.py | 9 | CODE | |
| LOW | test/python/testann/testdense.py | 111 | CODE | |
| LOW | src/python/txtai/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/__init__.py | 9 | CODE | |
| LOW | src/python/txtai/__init__.py | 10 | CODE | |
| LOW | src/python/txtai/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/__init__.py | 12 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 9 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 10 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 12 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 13 | CODE | |
| LOW | src/python/txtai/database/__init__.py | 14 | CODE | |
| LOW | src/python/txtai/database/encoder/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/database/encoder/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/database/encoder/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/database/encoder/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/database/schema/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/database/schema/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/database/sql/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/database/sql/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/database/sql/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/database/sql/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/database/sql/__init__.py | 9 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 9 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 10 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 12 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 13 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 14 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 15 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 16 | CODE | |
| LOW | src/python/txtai/pipeline/__init__.py | 17 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 8 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 9 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 10 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 11 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 12 | CODE | |
| LOW | src/python/txtai/pipeline/llm/__init__.py | 13 | CODE | |
| LOW | src/python/txtai/pipeline/image/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/pipeline/image/__init__.py | 6 | CODE | |
| LOW | src/python/txtai/pipeline/image/__init__.py | 7 | CODE | |
| LOW | src/python/txtai/pipeline/audio/__init__.py | 5 | CODE | |
| LOW | src/python/txtai/pipeline/audio/__init__.py | 6 | CODE | |
| 203 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/python/testconsole.py | 47 | # Create an index for the list of text | STRING |
| MEDIUM | test/python/testconsole.py | 101 | # Create an index for the list of text | STRING |
| MEDIUM | test/python/testembeddings.py | 115 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testembeddings.py | 261 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testembeddings.py | 294 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testembeddings.py | 320 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testembeddings.py | 455 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testembeddings.py | 639 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 59 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 80 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 173 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 205 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 223 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 239 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 258 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 386 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 396 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 418 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 438 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 497 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testgraph.py | 570 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testcloud.py | 155 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 66 | # Create an index | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 81 | # Create an index for the list of images | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 100 | # Create an index | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 116 | # Create an index | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 130 | # Create an index for the list of images | COMMENT |
| MEDIUM | test/python/testdatabase/testencoder.py | 152 | # Create an index for the list of images | COMMENT |
| MEDIUM | test/python/testdatabase/testduckdb.py | 70 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 64 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 166 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 178 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 275 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 338 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 351 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 364 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 447 | # Create an index using mixed data (text and documents) | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 465 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 591 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 604 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 623 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 649 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 662 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 704 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 885 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testrdbms.py | 909 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testdatabase/testsqlite.py | 59 | # Create an index for the list of text | COMMENT |
| MEDIUM | test/python/testvectors/testdense/testvectors.py | 66 | # Create the recovery instance with an empty checkpoint file | COMMENT |
| MEDIUM | src/python/txtai/pipeline/llm/litert.py | 51 | # Create the engine | COMMENT |
| MEDIUM | src/python/txtai/pipeline/text/entity.py | 25 | # Create a new entity pipeline | COMMENT |
| MEDIUM | src/python/txtai/pipeline/data/urlretrieve.py | 53 | # Create a blank opener | COMMENT |
| MEDIUM | src/python/txtai/pipeline/data/tokenizer.py | 58 | # Create a tokenizer with backwards compatible settings | COMMENT |
| MEDIUM | src/python/txtai/pipeline/data/segmentation.py | 74 | # Create a third-party chunker, if applicable | COMMENT |
| MEDIUM | src/python/txtai/ann/dense/ggml.py | 143 | # Initialize GGML objects | COMMENT |
| MEDIUM | src/python/txtai/ann/dense/ggml.py | 175 | # Initialize GGML objects | COMMENT |
| MEDIUM | src/python/txtai/ann/dense/ggml.py | 194 | # Initialize GGML objects | COMMENT |
| MEDIUM | src/python/txtai/ann/sparse/ivfsparse.py | 131 | # This method is able to run as multiple threads due to a number of numpy/scipy method calls that drop the GIL. | COMMENT |
| MEDIUM | src/python/txtai/app/base.py | 66 | # Initialize member variables | COMMENT |
| MEDIUM | src/python/txtai/agent/factory.py | 38 | # Create the agent process | COMMENT |
| MEDIUM | src/python/txtai/workflow/task/base.py | 243 | # Create a copy of tuple, update data element and return | COMMENT |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/python/testarchive.py | 48 | # Check if file properly extracted | COMMENT |
| LOW | examples/baseball.py | 492 | # Display results | COMMENT |
| LOW | examples/benchmarks.py | 84 | # Increment offset | COMMENT |
| LOW | src/python/txtai/database/factory.py | 48 | # Check if content is a URL | COMMENT |
| LOW | src/python/txtai/database/sql/aggregate.py | 35 | # Check if this is a SQL query with results. A sharded query that matches | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 71 | # Check if separator, increment clause index | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 75 | # Check if token is a square bracket | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 80 | # Check if token is a similar function | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 85 | # Check if token is a function | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 301 | # Check if token is a square bracket | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 306 | # Check if token is a similar function | COMMENT |
| LOW⚡ | src/python/txtai/database/sql/expression.py | 311 | # Check if token is a function | COMMENT |
| LOW | src/python/txtai/pipeline/hfpipeline.py | 39 | # Check if input model is a Pipeline or a HF pipeline | COMMENT |
| LOW | src/python/txtai/pipeline/llm/llama.py | 45 | # Check if this is a local path, otherwise download from the HF Hub | COMMENT |
| LOW | src/python/txtai/pipeline/llm/litert.py | 48 | # Check if this is a local path, otherwise download from the HF Hub | COMMENT |
| LOW | src/python/txtai/pipeline/audio/transcription.py | 97 | # Read file or file-like object | COMMENT |
| LOW | src/python/txtai/pipeline/audio/texttospeech.py | 133 | # Check if file exists | COMMENT |
| LOW | src/python/txtai/pipeline/audio/texttospeech.py | 220 | # Check if token is a punctuation token | COMMENT |
| LOW | src/python/txtai/pipeline/train/hfonnx.py | 116 | # Read file back to bytes if temp file was created | COMMENT |
| LOW | src/python/txtai/pipeline/data/filetohtml.py | 118 | # Check if Java binary is available on path | COMMENT |
| LOW | src/python/txtai/pipeline/data/textractor.py | 50 | # Check if text is a valid file path or url | COMMENT |
| LOW | src/python/txtai/pipeline/data/safeopen.py | 53 | # Check if this is a local file path or local file url | COMMENT |
| LOW | src/python/txtai/pipeline/data/htmltomd.py | 365 | # Check if this node is valid or it's part of a table cell | COMMENT |
| LOW | src/python/txtai/pipeline/data/htmltomd.py | 368 | # Check if text is valid article text | COMMENT |
| LOW | src/python/txtai/pipeline/data/htmltomd.py | 404 | # Check if this is a link node or link container | COMMENT |
| LOW | src/python/txtai/ann/dense/ggml.py | 310 | # Write file and free resources | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 520 | # Check if this exists in a cloud instance | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 525 | # Check if this is an archive file and exists | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 552 | # Check if this is an archive file and extract | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 618 | # Check if this is an archive file | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 842 | # Check if default model should be loaded | COMMENT |
| LOW | src/python/txtai/embeddings/base.py | 936 | # Check if path is an archive file | COMMENT |
| LOW | src/python/txtai/embeddings/index/autoid.py | 35 | # Check if signature takes a namespace argument (deterministic) | COMMENT |
| LOW | src/python/txtai/embeddings/index/indexes.py | 35 | # Check if top-level indexing is enabled for this embeddings instance | COMMENT |
| LOW | src/python/txtai/embeddings/index/transform.py | 54 | # Check if top-level indexing is enabled for this embeddings | COMMENT |
| LOW | src/python/txtai/embeddings/index/transform.py | 207 | # Increment offset | COMMENT |
| LOW | src/python/txtai/app/base.py | 360 | # Check if function is a pipeline | COMMENT |
| LOW | src/python/txtai/app/base.py | 364 | # Check if function is a workflow | COMMENT |
| LOW | src/python/txtai/archive/zip.py | 24 | # Write file to zip | COMMENT |
| LOW | src/python/txtai/graph/topics.py | 74 | # Check if scoring index has data | COMMENT |
| LOW | src/python/txtai/agent/base.py | 135 | # Check if this is a file path (i.e. agents.md) | STRING |
| LOW | src/python/txtai/agent/tool/skill.py | 68 | # Read file content | STRING |
| LOW | src/python/txtai/models/pooling/late.py | 25 | # Check if fixed dimensional encoder is enabled | COMMENT |
| LOW | src/python/txtai/vectors/recovery.py | 35 | # Open file an return | COMMENT |
| LOW | src/python/txtai/vectors/base.py | 99 | # Check if model is cached | COMMENT |
| LOW | src/python/txtai/vectors/dense/llama.py | 50 | # Check if this is a local path, otherwise download from the HF Hub | COMMENT |
| LOW | src/python/txtai/vectors/dense/words.py | 88 | # Check if this is a SQLite database | COMMENT |
| LOW | src/python/txtai/vectors/dense/external.py | 51 | # Check if transform function resolution is allowed | COMMENT |
| LOW | src/python/txtai/vectors/dense/litert.py | 51 | # Check if this is a local path, otherwise download from the HF Hub | COMMENT |
| LOW | src/python/txtai/workflow/task/template.py | 38 | # Check if element matches any processing rules | COMMENT |
| LOW | src/python/txtai/workflow/task/template.py | 91 | # Check if any rules are matched | COMMENT |
| LOW | src/python/txtai/cloud/hub.py | 85 | # Check if index files are lfs-tracked. Update .gitattributes, if necessary. | COMMENT |
| LOW | src/python/txtai/scoring/pgtext.py | 61 | # Increment index | COMMENT |
| LOW | src/python/txtai/scoring/sif.py | 30 | # Set freq to word frequencies across entire index when freq and idf shape don't match | COMMENT |
| LOW | src/python/txtai/scoring/tfidf.py | 90 | # Increment index | COMMENT |
| LOW | src/python/txtai/scoring/tfidf.py | 162 | # Check if term index available | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/python/txtai/database/base.py | 117 | Runs a search against the database. Supports the following methods: 1. Standard similarity query. | STRING |
| HIGH | src/python/txtai/database/base.py | 206 | Executes query against database. Args: query: input query limit: maximum numbe | STRING |
| HIGH | src/python/txtai/embeddings/base.py | 357 | Finds documents most similar to the input query. This method runs an index search, index + database search | STRING |
| HIGH | src/python/txtai/embeddings/base.py | 379 | Finds documents most similar to the input query. This method runs an index search, index + database search | STRING |
| HIGH | src/python/txtai/embeddings/search/scan.py | 38 | Executes a scan for a list of queries. Args: queries: list of queries to run p | STRING |
| HIGH | src/python/txtai/embeddings/search/scan.py | 80 | Parse index query clauses from a list of parsed queries. Args: queries: list of parsed que | STRING |
| HIGH | src/python/txtai/embeddings/search/scan.py | 114 | Resolves bind parameters for a similar function call. Args: similar: similar function call | STRING |
| HIGH | src/python/txtai/embeddings/search/base.py | 45 | Executes a batch search for queries. This method will run either an index search or an index + database search | STRING |
| HIGH | src/python/txtai/embeddings/search/base.py | 211 | Executes an index + database search. Args: queries: list of queries limit: max | STRING |
| HIGH | src/python/txtai/app/base.py | 376 | Finds documents most similar to the input query. This method will run either an index search or an inde | STRING |
| HIGH | src/python/txtai/app/base.py | 402 | Finds documents most similar to the input queries. This method will run either an index search or an in | STRING |
| HIGH | src/python/txtai/graph/query.py | 161 | Filters the input graph by uids. This method also adds similar match attributes. Args: gra | STRING |
| HIGH | src/python/txtai/api/cluster.py | 42 | Finds documents most similar to the input query. This method will run either an index search or an inde | STRING |
| HIGH | src/python/txtai/api/cluster.py | 83 | Finds documents most similar to the input queries. This method will run either an index search or an in | STRING |
| HIGH | src/python/txtai/api/routers/embeddings.py | 61 | Finds documents most similar to the input queries. This method will run either an index search or an index + da | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/python/testapi/testapipipeline.py | 49 | # Enable pipeline similarity backed by zero shot classifier | COMMENT |
| MEDIUM | test/python/testapi/testapiembeddings.py | 74 | # Configuration for RAG | STRING |
| MEDIUM | test/python/testapi/testapiembeddings.py | 92 | # RAG settings | COMMENT |
| MEDIUM | test/python/testapi/testapiembeddings.py | 431 | # Re-create application with a RAG pipeline | STRING |
| MEDIUM | test/python/testpipeline/testtrain/testonnx.py | 159 | # Test zero shot classification | COMMENT |
| MEDIUM | docs/observability.md | 69 | ### Retrieval Augmented Generation (RAG) | COMMENT |
| MEDIUM | docs/observability.md | 88 | # Create RAG pipeline | COMMENT |
| MEDIUM | docs/pipeline/llm/rag.md | 1 | # RAG | COMMENT |
| MEDIUM | docs/pipeline/llm/rag.md | 33 | # Create the RAG pipeline | COMMENT |
| MEDIUM | docs/pipeline/llm/rag.md | 44 | # Run RAG pipeline | STRING |
| MEDIUM | docs/pipeline/llm/rag.md | 83 | # - Streaming RAG response with `stream=True` | STRING |
| MEDIUM | docs/pipeline/llm/rag.md | 179 | ### ::: txtai.pipeline.RAG.__init__ | STRING |
| MEDIUM | docs/pipeline/llm/rag.md | 180 | ### ::: txtai.pipeline.RAG.__call__ | STRING |
| MEDIUM | docs/agent/index.md | 64 | ## Agentic RAG | COMMENT |
| MEDIUM⚡ | examples/rag_quickstart.py | 44 | # Step 4: Create RAG pipeline | COMMENT |
| MEDIUM⚡ | examples/benchmarks.py | 244 | # Read RAG configuration | COMMENT |
| MEDIUM⚡ | examples/benchmarks.py | 247 | # Load RAG pipeline | COMMENT |
| MEDIUM⚡ | examples/benchmarks.py | 251 | # Set context window size to limit and run | COMMENT |
| MEDIUM⚡ | examples/agent_quickstart.py | 19 | # See RAG Quickstart for an example of building your own custom database | COMMENT |
| MEDIUM | src/python/txtai/pipeline/text/labels.py | 16 | # Set if labels are dynamic (zero shot) or fixed (standard text classification) | COMMENT |
| MEDIUM | src/python/txtai/pipeline/text/labels.py | 42 | # Run zero shot classification pipeline | COMMENT |
| MEDIUM | src/python/txtai/pipeline/text/similarity.py | 27 | # Use zero-shot classification if dynamic is True and crossencode is False, otherwise use standard text clas | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/python/testmodels/testpooling.py | 350 | CODE | |
| LOW | test/python/testapi/testcluster.py | 34 | CODE | |
| LOW | test/python/testpipeline/testtrain/testtrainer.py | 321 | CODE | |
| LOW | examples/books.py | 47 | CODE | |
| LOW | examples/workflows.py | 119 | CODE | |
| LOW | examples/workflows.py | 146 | CODE | |
| LOW | examples/workflows.py | 225 | CODE | |
| LOW | examples/workflows.py | 409 | CODE | |
| LOW | examples/workflows.py | 503 | CODE | |
| LOW | examples/workflows.py | 676 | CODE | |
| LOW | examples/baseball.py | 158 | CODE | |
| LOW | examples/baseball.py | 297 | CODE | |
| LOW | src/python/txtai/database/factory.py | 21 | CODE | |
| LOW | src/python/txtai/database/rdbms.py | 37 | CODE | |
| LOW | src/python/txtai/database/rdbms.py | 177 | CODE | |
| LOW | src/python/txtai/database/rdbms.py | 479 | CODE | |
| LOW | src/python/txtai/database/sql/aggregate.py | 52 | CODE | |
| LOW | src/python/txtai/database/sql/expression.py | 53 | CODE | |
| LOW | src/python/txtai/database/sql/expression.py | 128 | CODE | |
| LOW | src/python/txtai/database/sql/expression.py | 285 | CODE | |
| LOW | src/python/txtai/pipeline/hfmodel.py | 87 | CODE | |
| LOW | src/python/txtai/pipeline/llm/factory.py | 58 | CODE | |
| LOW | src/python/txtai/pipeline/llm/rag.py | 178 | CODE | |
| LOW | src/python/txtai/pipeline/llm/rag.py | 399 | CODE | |
| LOW | src/python/txtai/pipeline/image/imagehash.py | 68 | CODE | |
| LOW | src/python/txtai/pipeline/audio/microphone.py | 93 | CODE | |
| LOW | src/python/txtai/pipeline/train/hftrainer.py | 208 | CODE | |
| LOW | src/python/txtai/pipeline/data/tokenizer.py | 100 | CODE | |
| LOW | src/python/txtai/pipeline/data/tokenizer.py | 143 | CODE | |
| LOW | src/python/txtai/pipeline/data/htmltomd.py | 165 | CODE | |
| LOW | src/python/txtai/pipeline/data/segmentation.py | 125 | CODE | |
| LOW | src/python/txtai/ann/dense/factory.py | 27 | CODE | |
| LOW | src/python/txtai/embeddings/search/scan.py | 79 | CODE | |
| LOW | src/python/txtai/embeddings/index/transform.py | 123 | CODE | |
| LOW | src/python/txtai/app/base.py | 96 | CODE | |
| LOW | src/python/txtai/app/base.py | 151 | CODE | |
| LOW | src/python/txtai/app/base.py | 186 | CODE | |
| LOW | src/python/txtai/app/base.py | 253 | CODE | |
| LOW | src/python/txtai/app/base.py | 308 | CODE | |
| LOW | src/python/txtai/graph/query.py | 122 | CODE | |
| LOW | src/python/txtai/graph/base.py | 444 | CODE | |
| LOW | src/python/txtai/graph/base.py | 515 | CODE | |
| LOW | src/python/txtai/graph/base.py | 592 | CODE | |
| LOW | src/python/txtai/graph/networkx.py | 123 | CODE | |
| LOW | src/python/txtai/agent/tool/grep.py | 39 | CODE | |
| LOW | src/python/txtai/agent/tool/factory.py | 51 | CODE | |
| LOW | src/python/txtai/models/models.py | 231 | CODE | |
| LOW | src/python/txtai/models/pooling/late.py | 164 | CODE | |
| LOW | src/python/txtai/vectors/dense/factory.py | 76 | CODE | |
| LOW | src/python/txtai/vectors/dense/words.py | 154 | CODE | |
| LOW | src/python/txtai/scoring/factory.py | 21 | CODE | |
| LOW | src/python/txtai/scoring/tfidf.py | 63 | CODE | |
| LOW | src/python/txtai/api/routers/openai.py | 25 | CODE | |
| LOW | src/python/txtai/data/base.py | 43 | CODE | |
| LOW | src/python/txtai/console/base.py | 66 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docs/workflow/schedule.md | 13 | # ┌─────────────── minute (0 - 59) | COMMENT |
| MEDIUM⚡ | docs/workflow/schedule.md | 14 | # | ┌───────────── hour (0 - 23) | COMMENT |
| MEDIUM⚡ | docs/workflow/schedule.md | 15 | # | | ┌─────────── day of the month (1 - 31) | COMMENT |
| MEDIUM⚡ | docs/workflow/schedule.md | 16 | # | | | ┌───────── month (1 - 12) | COMMENT |
| MEDIUM⚡ | docs/workflow/schedule.md | 17 | # | | | | ┌─────── day of the week (0 - 6) | COMMENT |
| MEDIUM⚡ | docs/workflow/schedule.md | 18 | # | | | | | ┌───── second (0 - 59) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | examples/rag_quickstart.py | 20 | # Step 1: Collect files from local directory | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 26 | # Step 2: Text Extraction / Chunking | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 37 | # Step 3: Build an embeddings database | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 44 | # Step 4: Create RAG pipeline | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 16 | # Step 1: Define available pipelines | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 21 | # Step 2: Define workflow tasks | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 24 | # Step 3: Run the workflow | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 16 | # Step 1: Define your Embeddings database | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 29 | # Step 2: Define other tools | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 43 | # Step 3: Create a list of available tools | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 53 | # Step 4: Set LLM configuration | COMMENT |
| LOW | examples/agent_quickstart.py | 72 | # Step 4: Create an Agent | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | examples/rag_quickstart.py | 20 | # Step 1: Collect files from local directory | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 26 | # Step 2: Text Extraction / Chunking | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 37 | # Step 3: Build an embeddings database | COMMENT |
| LOW⚡ | examples/rag_quickstart.py | 44 | # Step 4: Create RAG pipeline | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 16 | # Step 1: Define available pipelines | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 21 | # Step 2: Define workflow tasks | COMMENT |
| LOW⚡ | examples/workflow_quickstart.py | 24 | # Step 3: Run the workflow | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 16 | # Step 1: Define your Embeddings database | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 29 | # Step 2: Define other tools | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 43 | # Step 3: Create a list of available tools | COMMENT |
| LOW⚡ | examples/agent_quickstart.py | 53 | # Step 4: Set LLM configuration | COMMENT |
| LOW | examples/agent_quickstart.py | 72 | # Step 4: Create an Agent | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/python/txtai/database/factory.py | 77 | except Exception as e: | CODE |
| LOW | src/python/txtai/database/base.py | 327 | except Exception as e: | CODE |
| LOW | src/python/txtai/pipeline/llm/factory.py | 100 | except Exception as e: | CODE |
| LOW | src/python/txtai/pipeline/data/urlretrieve.py | 102 | except Exception: | CODE |
| LOW | src/python/txtai/ann/dense/milvus.py | 45 | except Exception: | CODE |
| LOW | src/python/txtai/ann/dense/factory.py | 88 | except Exception as e: | CODE |
| LOW | src/python/txtai/ann/dense/zvec.py | 44 | except Exception: | CODE |
| LOW | src/python/txtai/ann/sparse/factory.py | 61 | except Exception as e: | CODE |
| LOW | src/python/txtai/embeddings/index/indexes.py | 74 | except Exception as e: | CODE |
| LOW | src/python/txtai/app/base.py | 332 | except Exception: | CODE |
| LOW | src/python/txtai/graph/factory.py | 61 | except Exception as e: | CODE |
| LOW | src/python/txtai/vectors/dense/factory.py | 128 | except Exception as e: | CODE |
| LOW | src/python/txtai/vectors/sparse/factory.py | 55 | except Exception as e: | CODE |
| LOW | src/python/txtai/workflow/base.py | 106 | except Exception: | CODE |
| LOW | src/python/txtai/cloud/factory.py | 64 | except Exception as e: | CODE |
| LOW | src/python/txtai/scoring/factory.py | 95 | except Exception as e: | CODE |
| LOW | src/python/txtai/console/base.py | 92 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/python/txtai/__init__.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/database/base.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/pipeline/llm/llm.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/pipeline/audio/texttospeech.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/pipeline/audio/microphone.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/embeddings/search/base.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/graph/query.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/serialize/pickle.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/vectors/dense/words.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/workflow/base.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/workflow/task/base.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/python/txtai/scoring/terms.py | 21 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/python/txtai/pipeline/text/labels.py | 72 | return list(self.pipeline.model.config.id2label.values()) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/python/txtai/pipeline/llm/rag.py | 24 | CODE | |
| LOW | src/python/txtai/pipeline/audio/microphone.py | 37 | CODE | |
| LOW | src/python/txtai/pipeline/train/lemur.py | 17 | CODE | |
| LOW | src/python/txtai/pipeline/train/hftrainer.py | 39 | CODE | |
| LOW | src/python/txtai/pipeline/data/textractor.py | 20 | CODE | |
| LOW | src/python/txtai/pipeline/data/segmentation.py | 31 | CODE | |
| LOW | src/python/txtai/models/pooling/lemur.py | 82 | CODE | |
| LOW | src/python/txtai/workflow/task/base.py | 25 | CODE | |
| LOW | src/python/txtai/data/texts.py | 75 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/pipeline/text/reranker.md | 81 | ### ::: txtai.pipeline.Reranker.__init__ | COMMENT |
| LOW | docs/pipeline/data/tokenizer.md | 81 | ### ::: txtai.pipeline.Tokenizer.__init__ | COMMENT |
| LOW | docs/pipeline/data/urlretrieve.md | 61 | ### ::: txtai.pipeline.URLRetrieve.__init__ | COMMENT |
| LOW | docs/pipeline/data/textractor.md | 81 | ### ::: txtai.pipeline.Textractor.__init__ | COMMENT |
| LOW | docs/agent/methods.md | 1 | # Methods | COMMENT |
| LOW | examples/rag_quickstart.py | 21 | # | COMMENT |
| LOW | examples/agent_quickstart.py | 41 | COMMENT | |
| LOW | examples/agent_quickstart.py | 61 | # model = "ollama/gpt-oss | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/python/testapi/testapiworkflow.py | 97 | class RequestHandler(BaseHTTPRequestHandler): | STRING |
| LOW | test/python/testapi/testcluster.py | 29 | class RequestHandler(BaseHTTPRequestHandler): | STRING |
| LOW | test/python/testpipeline/testdata/testurlretrieve.py | 16 | class RequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | test/python/testpipeline/testllm/testopencode.py | 14 | class RequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | test/python/testpipeline/testllm/testlitellm.py | 19 | class RequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | test/python/testvectors/testdense/testlitellm.py | 17 | class RequestHandler(BaseHTTPRequestHandler): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/python/txtai/database/rdbms.py | 189 | # Use JOIN when documents table is used to utilize indexes, default to LEFT JOIN | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/books.py | 8 | mkdir openlibrary && cd openlibrary | STRING |