gabrielaltay commited on
Commit
54174be
Β·
1 Parent(s): ce293a6

load vectorstore once

Browse files
src/legisqa_local/app.py CHANGED
@@ -3,6 +3,7 @@
3
  import logging
4
  import streamlit as st
5
  from legisqa_local.config.settings import STREAMLIT_CONFIG, setup_environment, setup_chromadb
 
6
  from legisqa_local.components.sidebar import render_sidebar
7
  from legisqa_local.tabs.rag_tab import RAGTab
8
  from legisqa_local.tabs.rag_sbs_tab import RAGSideBySideTab
@@ -35,6 +36,11 @@ def main():
35
  setup_chromadb()
36
  logger.info("βœ… ChromaDB setup complete")
37
 
 
 
 
 
 
38
  # Main content
39
  st.title(":classical_building: LegisQA :classical_building:")
40
  st.header("Query Congressional Bills")
 
3
  import logging
4
  import streamlit as st
5
  from legisqa_local.config.settings import STREAMLIT_CONFIG, setup_environment, setup_chromadb
6
+ from legisqa_local.core.vectorstore import initialize_vectorstore
7
  from legisqa_local.components.sidebar import render_sidebar
8
  from legisqa_local.tabs.rag_tab import RAGTab
9
  from legisqa_local.tabs.rag_sbs_tab import RAGSideBySideTab
 
36
  setup_chromadb()
37
  logger.info("βœ… ChromaDB setup complete")
38
 
39
+ # Initialize vectorstore (load once and cache)
40
+ logger.info("πŸ”„ Initializing vectorstore...")
41
+ initialize_vectorstore()
42
+ logger.info("βœ… Vectorstore initialization complete")
43
+
44
  # Main content
45
  st.title(":classical_building: LegisQA :classical_building:")
46
  st.header("Query Congressional Bills")
src/legisqa_local/core/vectorstore.py CHANGED
@@ -1,12 +1,22 @@
1
  """Vector store operations for LegisQA"""
2
 
 
 
3
  from langchain_chroma import Chroma
4
  from legisqa_local.core.embeddings import load_embeddings
5
  from legisqa_local.config.settings import get_chroma_config
6
 
 
 
7
 
8
  def load_vectorstore():
9
- """Load and return the ChromaDB vectorstore"""
 
 
 
 
 
 
10
  config = get_chroma_config()
11
  emb_fn = load_embeddings()
12
 
@@ -15,9 +25,34 @@ def load_vectorstore():
15
  collection_name=config["collection_name"],
16
  embedding_function=emb_fn,
17
  )
 
 
 
 
 
 
 
 
18
  return vectorstore
19
 
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  def get_vectorstore_filter(ret_config: dict) -> dict:
22
  """Get filter dict for ChromaDB queries"""
23
  where_clause = {}
 
1
  """Vector store operations for LegisQA"""
2
 
3
+ import logging
4
+ import streamlit as st
5
  from langchain_chroma import Chroma
6
  from legisqa_local.core.embeddings import load_embeddings
7
  from legisqa_local.config.settings import get_chroma_config
8
 
9
+ logger = logging.getLogger(__name__)
10
+
11
 
12
  def load_vectorstore():
13
+ """Load and return the ChromaDB vectorstore (cached in session state)"""
14
+ # Check if vectorstore is already loaded in session state
15
+ if hasattr(st, 'session_state') and hasattr(st.session_state, 'vectorstore'):
16
+ logger.debug("Using cached vectorstore from session state")
17
+ return st.session_state.vectorstore
18
+
19
+ logger.info("πŸ”„ Loading ChromaDB vectorstore...")
20
  config = get_chroma_config()
21
  emb_fn = load_embeddings()
22
 
 
25
  collection_name=config["collection_name"],
26
  embedding_function=emb_fn,
27
  )
28
+
29
+ # Cache in session state for future use
30
+ if hasattr(st, 'session_state'):
31
+ st.session_state.vectorstore = vectorstore
32
+ logger.info("βœ… Vectorstore loaded and cached in session state")
33
+ else:
34
+ logger.info("βœ… Vectorstore loaded (session state not available)")
35
+
36
  return vectorstore
37
 
38
 
39
+ def initialize_vectorstore():
40
+ """Initialize the vectorstore at application startup"""
41
+ logger.info("πŸš€ Initializing vectorstore at startup...")
42
+ vectorstore = load_vectorstore()
43
+
44
+ # Test the vectorstore with a simple query to ensure it's working
45
+ try:
46
+ # Get collection info for verification
47
+ collection = vectorstore._collection
48
+ count = collection.count()
49
+ logger.info(f"βœ… Vectorstore initialized successfully - {count} documents available")
50
+ return vectorstore
51
+ except Exception as e:
52
+ logger.error(f"❌ Error testing vectorstore: {e}")
53
+ raise
54
+
55
+
56
  def get_vectorstore_filter(ret_config: dict) -> dict:
57
  """Get filter dict for ChromaDB queries"""
58
  where_clause = {}