Implementation Detail
OraDBVectorStore
The bridge between the RAG agents and Oracle AI Database.
Manages four collection instances, sanitizes metadata, and
includes a monkeypatch for dual-format metadata handling.
class OraDBVectorStore:
def __init__(self, persist_directory, embedding_function):
# Initialize 4 OracleVS instances
self.pdf_store = OracleVS(
client=conn, table_name="PDFCOLLECTION",
embedding_function=oracle_emb,
distance_strategy=DistanceStrategy.COSINE
)
self.web_store = OracleVS(...) # WEBCOLLECTION
self.repo_store = OracleVS(...) # REPOCOLLECTION
self.gen_store = OracleVS(...) # GENERALCOLLECTION
def query_pdf_collection(self, query, n_results=3):
results = self.pdf_store.similarity_search_with_score(
query, k=n_results
)
return [{
"text": doc.page_content,
"similarity": 1/(1 + dist),
"metadata": doc.metadata
} for doc, dist in results]
API Surface
add_pdf_chunks()
add_web_chunks()
add_repo_chunks()
query_*_collection()
get_collection_count()
delete_documents()
Similarity Score
score = 1 / (1 + distance)
Euclidean distance → normalized 0–1 similarity