Packages

Production adapters and pipelines for PortfolioCore. Vector stores, graph stores, embedders, Broadway pipelines, and advanced RAG strategies.

Current section

Files

Jump to
portfolio_index assets portfolio_index.svg
Raw

assets/portfolio_index.svg

<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200" fill="none">
<defs>
<!-- Base hexagon -->
<path id="hexBase" d="M 100 8 L 180 54 L 180 146 L 100 192 L 20 146 L 20 54 Z"/>
<path id="hexInner" d="M 100 24 L 166 62 L 166 138 L 100 176 L 34 138 L 34 62 Z"/>
<!-- Gradients -->
<linearGradient id="baseFill" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0c1929"/>
<stop offset="50%" stop-color="#112240"/>
<stop offset="100%" stop-color="#1d3557"/>
</linearGradient>
<linearGradient id="baseStroke" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#f72585"/>
<stop offset="50%" stop-color="#b5179e"/>
<stop offset="100%" stop-color="#7209b7"/>
</linearGradient>
<linearGradient id="innerFill" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#1a3a5c"/>
<stop offset="100%" stop-color="#0d253f"/>
</linearGradient>
<linearGradient id="vectorGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#4cc9f0"/>
<stop offset="50%" stop-color="#4895ef"/>
<stop offset="100%" stop-color="#4361ee"/>
</linearGradient>
<linearGradient id="nodeGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#f72585"/>
<stop offset="100%" stop-color="#b5179e"/>
</linearGradient>
<linearGradient id="indexLine" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#4cc9f0" stop-opacity="0"/>
<stop offset="50%" stop-color="#4cc9f0" stop-opacity="1"/>
<stop offset="100%" stop-color="#4cc9f0" stop-opacity="0"/>
</linearGradient>
<radialGradient id="centerGlow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#4cc9f0" stop-opacity="0.3"/>
<stop offset="70%" stop-color="#4361ee" stop-opacity="0.1"/>
<stop offset="100%" stop-color="#0d253f" stop-opacity="0"/>
</radialGradient>
<linearGradient id="dbCylinder" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#3a0ca3"/>
<stop offset="50%" stop-color="#560bad"/>
<stop offset="100%" stop-color="#3a0ca3"/>
</linearGradient>
<linearGradient id="dbTop" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#7209b7"/>
<stop offset="100%" stop-color="#560bad"/>
</linearGradient>
<!-- Filters -->
<filter id="dropShadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="4" stdDeviation="5" flood-color="#000" flood-opacity="0.5"/>
</filter>
<filter id="vectorGlow" x="-50%" y="-50%" width="200%" height="200%">
<feDropShadow dx="0" dy="0" stdDeviation="4" flood-color="#4cc9f0" flood-opacity="0.7"/>
</filter>
<filter id="nodeGlow" x="-100%" y="-100%" width="300%" height="300%">
<feDropShadow dx="0" dy="0" stdDeviation="3" flood-color="#f72585" flood-opacity="0.8"/>
</filter>
<filter id="dbGlow" x="-50%" y="-50%" width="200%" height="200%">
<feDropShadow dx="0" dy="0" stdDeviation="5" flood-color="#7209b7" flood-opacity="0.6"/>
</filter>
<!-- Clip path -->
<clipPath id="hexClip">
<use href="#hexBase"/>
</clipPath>
<!-- Data flow pattern -->
<pattern id="dataFlow" patternUnits="userSpaceOnUse" width="16" height="16">
<circle cx="8" cy="8" r="1" fill="#4cc9f0" opacity="0.2"/>
<line x1="0" y1="8" x2="6" y2="8" stroke="#4cc9f0" stroke-width="0.5" opacity="0.15"/>
<line x1="10" y1="8" x2="16" y2="8" stroke="#4cc9f0" stroke-width="0.5" opacity="0.15"/>
</pattern>
</defs>
<!-- Background glow -->
<circle cx="100" cy="100" r="85" fill="url(#centerGlow)"/>
<!-- Outer hexagon -->
<g filter="url(#dropShadow)">
<use href="#hexBase" fill="url(#baseFill)" stroke="url(#baseStroke)" stroke-width="3"/>
</g>
<!-- Data flow pattern -->
<g clip-path="url(#hexClip)" opacity="0.5">
<rect x="0" y="0" width="200" height="200" fill="url(#dataFlow)"/>
</g>
<!-- Inner hexagon -->
<use href="#hexInner" fill="url(#innerFill)" stroke="#4895ef" stroke-width="1.5" opacity="0.8"/>
<!-- Vector arrows pointing to center (representing indexing) -->
<g filter="url(#vectorGlow)">
<!-- Top vector -->
<g transform="translate(100, 45)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
<!-- Top-right vector -->
<g transform="translate(145, 72) rotate(60)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
<!-- Bottom-right vector -->
<g transform="translate(145, 128) rotate(120)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
<!-- Bottom vector -->
<g transform="translate(100, 155) rotate(180)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
<!-- Bottom-left vector -->
<g transform="translate(55, 128) rotate(240)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
<!-- Top-left vector -->
<g transform="translate(55, 72) rotate(300)">
<line x1="0" y1="-15" x2="0" y2="8" stroke="url(#vectorGradient)" stroke-width="2.5"/>
<polygon points="0,12 -5,2 5,2" fill="#4cc9f0"/>
</g>
</g>
<!-- Central database/index symbol -->
<g filter="url(#dbGlow)" transform="translate(100, 100)">
<!-- Database cylinder -->
<ellipse cx="0" cy="-18" rx="22" ry="8" fill="url(#dbTop)" stroke="#b5179e" stroke-width="1"/>
<path d="M -22 -18 L -22 10 A 22 8 0 0 0 22 10 L 22 -18" fill="url(#dbCylinder)" stroke="#b5179e" stroke-width="1"/>
<ellipse cx="0" cy="10" rx="22" ry="8" fill="url(#dbTop)" stroke="#b5179e" stroke-width="1"/>
<!-- Data rows -->
<ellipse cx="0" cy="-6" rx="18" ry="5" fill="none" stroke="#4cc9f0" stroke-width="0.8" opacity="0.6"/>
<ellipse cx="0" cy="2" rx="18" ry="5" fill="none" stroke="#4cc9f0" stroke-width="0.8" opacity="0.4"/>
<!-- Index indicator lines -->
<g stroke="#f72585" stroke-width="1.5" opacity="0.8">
<line x1="-12" y1="-12" x2="12" y2="-12"/>
<line x1="-10" y1="-8" x2="10" y2="-8"/>
<line x1="-8" y1="-4" x2="8" y2="-4"/>
</g>
</g>
<!-- Outer data nodes -->
<g filter="url(#nodeGlow)">
<circle cx="100" cy="24" r="5" fill="url(#nodeGradient)"/>
<circle cx="166" cy="62" r="5" fill="url(#nodeGradient)"/>
<circle cx="166" cy="138" r="5" fill="url(#nodeGradient)"/>
<circle cx="100" cy="176" r="5" fill="url(#nodeGradient)"/>
<circle cx="34" cy="138" r="5" fill="url(#nodeGradient)"/>
<circle cx="34" cy="62" r="5" fill="url(#nodeGradient)"/>
</g>
<!-- Node outer rings -->
<g stroke="#f72585" stroke-width="1" fill="none" opacity="0.4">
<circle cx="100" cy="24" r="9"/>
<circle cx="166" cy="62" r="9"/>
<circle cx="166" cy="138" r="9"/>
<circle cx="100" cy="176" r="9"/>
<circle cx="34" cy="138" r="9"/>
<circle cx="34" cy="62" r="9"/>
</g>
<!-- Connection lines from nodes to vectors -->
<g stroke="#4895ef" stroke-width="0.8" opacity="0.4" stroke-dasharray="3,3">
<line x1="100" y1="32" x2="100" y2="38"/>
<line x1="158" y1="66" x2="150" y2="70"/>
<line x1="158" y1="134" x2="150" y2="130"/>
<line x1="100" y1="168" x2="100" y2="162"/>
<line x1="42" y1="134" x2="50" y2="130"/>
<line x1="42" y1="66" x2="50" y2="70"/>
</g>
<!-- Decorative corner accents -->
<g stroke="#b5179e" stroke-width="1" opacity="0.5">
<path d="M 25 50 L 25 40 L 35 40" fill="none"/>
<path d="M 175 50 L 175 40 L 165 40" fill="none"/>
<path d="M 25 150 L 25 160 L 35 160" fill="none"/>
<path d="M 175 150 L 175 160 L 165 160" fill="none"/>
</g>
</svg>