Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ecom-svc-reviewsense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bhargava Rellu
ecom-svc-reviewsense
Commits
2a14caf6
Commit
2a14caf6
authored
Apr 14, 2025
by
Mirza Mohammed Baig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[RS-101] - Integrated Astradb into Ecom Review Sense
parent
c068bacc
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
89 additions
and
1 deletion
+89
-1
config.py
src/reviewsense_ecom/core/config.py
+29
-0
mongo_db_config.py
src/reviewsense_ecom/mongo/mongo_db_config.py
+9
-1
retrieval.py
src/reviewsense_ecom/service/retrieval.py
+37
-0
review_adder.py
src/reviewsense_ecom/service/review_adder.py
+14
-0
No files found.
src/reviewsense_ecom/core/config.py
0 → 100644
View file @
2a14caf6
from
functools
import
lru_cache
from
pydantic.v1
import
BaseSettings
class
Settings
(
BaseSettings
):
"""Application configuration settings"""
ASTRA_DB_API_ENDPOINT
:
str
=
"https://0c52512b-0c65-4e70-ac47-71edf5244a82-us-east-2.apps.astra.datastax.com"
ASTRA_DB_APPLICATION_TOKEN
:
str
=
"AstraCS:EvXpFFafufegdQJvhqlYxmxt:ef86b5996013b12140b69254bd554d7e8e10eb5a7137859b9c432f92a5a3b65c"
ASTRA_DB_NAMESPACE
:
str
=
"default_keyspace"
# Default settings
EMBEDDING_MODEL
:
str
=
"sentence-transformers/all-mpnet-base-v2"
class
Config
:
env_file
=
".env"
env_file_encoding
=
"utf-8"
extra
=
"allow"
# Allow extra fields
@
lru_cache
()
def
get_settings
():
"""
Cached settings retrieval to optimize performance
Returns:
Settings: Configured application settings
"""
return
Settings
()
src/reviewsense_ecom/mongo/mongo_db_config.py
View file @
2a14caf6
...
@@ -6,6 +6,7 @@ from pymongo import MongoClient
...
@@ -6,6 +6,7 @@ from pymongo import MongoClient
from
src.reviewsense_ecom.model.FeatureSentiment
import
FeatureSentiment
from
src.reviewsense_ecom.model.FeatureSentiment
import
FeatureSentiment
from
src.reviewsense_ecom.model.Product
import
Product
from
src.reviewsense_ecom.model.Product
import
Product
from
src.reviewsense_ecom.model.ProductReview
import
ProductReview
from
src.reviewsense_ecom.model.ProductReview
import
ProductReview
from
src.reviewsense_ecom.service.review_adder
import
ReviewAdder
# def get_db_connection(collection_name: str): #LOCAL DB
# def get_db_connection(collection_name: str): #LOCAL DB
...
@@ -134,7 +135,14 @@ def add_review_features(input_data, reviews_by_feature):
...
@@ -134,7 +135,14 @@ def add_review_features(input_data, reviews_by_feature):
inserted_result
=
collection
.
insert_one
(
new_review
.
__dict__
)
inserted_result
=
collection
.
insert_one
(
new_review
.
__dict__
)
if
inserted_result
.
inserted_id
:
if
inserted_result
.
inserted_id
:
print
(
f
"Review successfully added with ID: {inserted_result.inserted_id}"
)
print
(
f
"Review successfully added Into MongoDB with ID: {inserted_result.inserted_id}"
)
# ✅ Add review to vector DB
try
:
review_adder
=
ReviewAdder
()
vector_id
=
review_adder
.
add_review_vector
(
input_data
.
product_id
,
input_data
.
new_review
)
print
(
f
"Review also added to Vector DB with ID: {vector_id} "
)
except
Exception
as
e
:
print
(
f
"Failed to add review to vector DB: {e}"
)
# Return the newly inserted review object
# Return the newly inserted review object
return
new_review
.
__dict__
return
new_review
.
__dict__
...
...
src/reviewsense_ecom/service/retrieval.py
0 → 100644
View file @
2a14caf6
# src/reviewsense/core/database.py
from
functools
import
lru_cache
from
langchain_community.embeddings
import
HuggingFaceInferenceAPIEmbeddings
from
langchain_huggingface
import
HuggingFaceEmbeddings
from
langchain_astradb
import
AstraDBVectorStore
from
src.reviewsense_ecom.core.config
import
get_settings
@
lru_cache
(
maxsize
=
1
)
def
get_vector_store
(
collection_name
:
str
=
"customer_reviews"
,
embedding_model
:
str
=
"sentence-transformers/all-mpnet-base-v2"
):
"""
Create a singleton vector store instance
Args:
collection_name (str): Database collection name
embedding_model (str): Embedding model to use
Returns:
AstraDBVectorStore: Configured vector store instance
"""
settings
=
get_settings
()
# Initialize embeddings
embeddings
=
HuggingFaceInferenceAPIEmbeddings
(
api_key
=
"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"
,
model_name
=
"BAAI/bge-base-en-v1.5"
)
# Create and return vector store
return
AstraDBVectorStore
(
collection_name
=
collection_name
,
embedding
=
embeddings
,
api_endpoint
=
"https://9706ee0b-b3e8-4ee2-bb26-45e8a0db1586-us-east-2.apps.astra.datastax.com"
,
token
=
"AstraCS:OEbpcggZbUjOvRiesULZkTnf:9d215d8d32c2ffb09081212208e474f81a0bcdde45e7b683cd67f4a1a936a8bf"
,
namespace
=
"default_keyspace"
,
)
\ No newline at end of file
src/reviewsense_ecom/service/review_adder.py
0 → 100644
View file @
2a14caf6
# services/review_adder.py
from
langchain_community.docstore.document
import
Document
from
.retrieval
import
get_vector_store
class
ReviewAdder
:
"""Class for adding reviews to the vector store"""
def
__init__
(
self
):
self
.
vector_store
=
get_vector_store
()
def
add_review_vector
(
self
,
product_id
:
str
,
review
:
str
)
->
str
:
review_document
=
Document
(
page_content
=
review
,
metadata
=
{
"title"
:
product_id
})
return
self
.
vector_store
.
add_documents
([
review_document
])[
0
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment