<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Koti eswar mani gudi</title>
    <description>The latest articles on DEV Community by Koti eswar mani gudi (@gkemhcs).</description>
    <link>https://dev.to/gkemhcs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F958743%2F6ea54b7e-8ae0-432a-a2ba-557c6d74a1b0.jpg</url>
      <title>DEV Community: Koti eswar mani gudi</title>
      <link>https://dev.to/gkemhcs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gkemhcs"/>
    <language>en</language>
    <item>
      <title>Project GenAI Url Digest</title>
      <dc:creator>Koti eswar mani gudi</dc:creator>
      <pubDate>Tue, 04 Jun 2024 07:33:37 +0000</pubDate>
      <link>https://dev.to/gkemhcs/project-genai-url-digest-5do8</link>
      <guid>https://dev.to/gkemhcs/project-genai-url-digest-5do8</guid>
      <description>&lt;h2&gt;
  
  
  Project Description:-
&lt;/h2&gt;

&lt;p&gt;GenAI-Url-Digest is a simple GenAI-RAG web app built with the LangChain framework and deployed in GKE as a microservice, including both frontend and backend. We improved observability with OpenTelemetry distributed tracing and set up continuous integration with Jenkins pipelines and continuous deployment with Argo CD. Ansible configured the Jenkins master node, and Terraform deployed the infrastructure. A pgvector database stores vector embeddings, allowing LangChain to perform vector searches. The project supports both local and cloud deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Langchain Framework with RAG&lt;/li&gt;
&lt;li&gt;Google Kubernetes Engine&lt;/li&gt;
&lt;li&gt;Opentelemetry Tracing&lt;/li&gt;
&lt;li&gt;Ansible&lt;/li&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;li&gt;Jenkins&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Website Images
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                        Website Architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfnpyzodiaypqmdvqml9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfnpyzodiaypqmdvqml9.jpg" alt="Image description" width="800" height="646"&gt;&lt;/a&gt;&lt;br&gt;
                             Url Post Route&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uv0gpumu8dtx741xjyl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uv0gpumu8dtx741xjyl.png" alt="Image description" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                     Question &amp;amp; Answer page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7lm3n0036uryb0kv2yt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7lm3n0036uryb0kv2yt.png" alt="Image description" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Cloud trace dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a3rudcco5qdiv71k8ev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a3rudcco5qdiv71k8ev.png" alt="Image description" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the small intro to project.For full project setup visit below github repo once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Gkemhcs/genai-url-digest.git"&gt;PROJECT_GITHUB_REPO&lt;/a&gt;&lt;br&gt;
**&lt;br&gt;
Sample Docker Compose File for Local Deployment **&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: "urldigest"
version: '3.8'

services:
  frontend:
    build: ./src/frontend
    environment:
      - BACKEND_SERVER_URL=http://backend:5001
      - REDIS_SERVER_URL=redis
      - REDIS_AUTH_STRING=gkem1234
      - OTLP_ENDPOINT=otelcol

    depends_on:
      - backend
    ports:
      - "5000:5000"
    networks:
    - frontend 
    - backend 
    - redis
    - otelcol

  backend:
    build: ./src/backend
    ports:
      - "5001:5001"
    environment:
      - GOOGLE_APPLICATION_CREDENTIALS=/run/secrets/key.json
      - PGVECTOR_HOST_URL=pgvector
      - PGVECTOR_USER=gkem
      - PGVECTOR_PASSWORD=gkem1234
      - PGVECTOR_DATABASE=urldigest
      - OTLP_ENDPOINT=otelcol
    secrets:
      - key.json
    depends_on:
      - redis
      - pgvector
      - otelcol
    networks:
    - backend 
    - otelcol
    - pgvector

  redis:
    image: redis:latest
    command: redis-server /usr/local/etc/redis/redis.conf --requirepass gkem1234
    volumes:
      - ./config/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - 6379:6379
    networks:
    - redis

  otelcol:
    image: otel/opentelemetry-collector:latest
    command: --config /etc/otelcol/config.yaml
    volumes:
      - ./collector.yaml:/etc/otelcol/config.yaml
    ports:
      - 4317:4317
      - 4318:4318
      - 55681:55681
      - 55680:55680
    depends_on:
      - zipkin
    networks:
    - otelcol
    - zipkin

  pgvector:
    image: pgvector/pgvector:pg16
    environment:
      - POSTGRES_USER=gkem
      - POSTGRES_PASSWORD=gkem1234
      - POSTGRES_DB=urldigest
    ports:
      - 5432:5432
    networks:
    - pgvector

  zipkin:
    image: openzipkin/zipkin
    ports:
      - 9411:9411
    networks:
      - zipkin

secrets:
  key.json:
    file: ./key.json

networks:
  zipkin:
  redis:
  frontend:
  backend:
  otelcol:
  pgvector:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>googlecloud</category>
      <category>kubernetes</category>
      <category>opentelemetry</category>
      <category>terraform</category>
    </item>
  </channel>
</rss>
